Przejdź do głównej treści
Naprawa wycieku pamięci

Zatrzymaj wyciek pamięci Monosnap — przełącz się w 60 sekund

Wyciek jest udokumentowany od lat. Nie zostanie załatany. Maxisnap zużywa ~50 MB w stanie bezczynności i utrzymuje się na stałym poziomie przez cały dzień. Ten sam skrót klawiszowy Ctrl+Alt+5, bez konieczności ponownej nauki.

8-godzinny dzień pracy, RAM w MB
Monosnap, godzina 0180
Monosnap, godzina 2295
Monosnap, godzina 4452
Monosnap, godzina 8812
Maxisnap, o każdej porze51

Wyciek nie jest problemem Twojego komputera

Jeśli zastanawiałeś się, czy to wina Twojej maszyny — stary sterownik, dziwactwa Windows 11, uciekająca karta Chrome — to nie. Wyciek jest wewnątrz Monosnap i trwa od lat. Wyszukaj r/monosnap a znajdziesz wątek za wątkiem opisujący ten sam schemat.

Oto, co dzieje się pod maską. Za każdym razem, gdy Monosnap przechwytuje region, alokuje bufor ramki wystarczająco duży, aby pomieścić surowe dane pikseli. Dla ekranu 2560 x 1440 to około 14 MB. Kiedy edytor się zamyka, te bufory powinny zostać zwolnione z powrotem do systemu operacyjnego. W Monosnap często tak się nie dzieje — są one zatrzymywane przez stertę renderera Electron, czekając na przebieg garbage collection, który albo nigdy się nie uruchamia, albo uruchamia się zbyt późno. W ciągu dnia pracy z ponad 40 przechwyceniami, zatrzymane bufory gromadzą się w setki megabajtów fantomowej pamięci RAM.

Rozwiązaniem jest inna aplikacja

Architektura Monosnap wiąże wyciek z samym Electronem, a załatanie go wymagałoby przepisania potoku przechwytywania. To przepisanie nie nastąpiło od pięciu lat. Praktycznym rozwiązaniem jest narzędzie, które od początku zostało zaprojektowane bez tego problemu.

Maxisnap jest zbudowany na PyQt6 i skompilowany za pomocą PyInstaller w pojedynczy plik wykonywalny Win32. Nie ma procesu Chromium. Każde przechwycenie alokuje QImage, edytor odwołuje się do niego, a gdy okno się zamyka, odwołanie jest usuwane, a pamięć natychmiast wraca do systemu operacyjnego — ponieważ model własności PyQt i zliczanie referencji Pythona zwalniają pamięć natychmiast, zamiast czekać na generacyjne GC.

Empirycznie: Maxisnap w stanie bezczynności po uruchomieniu zużywa około 50 MB. Po 72 godzinach ciągłego działania z regularnymi przechwyceniami, nadal zużywa około 50 MB. Wykres powyżej pochodzi z rzeczywistych logów.

Poniżej 60 sekund

Procedura zmiany

  1. 0:00
    Pobierz Maxisnap. Przejdź do strony pobierania. Jedno kliknięcie, 63 MB.
  2. 0:15
    Zamknij Monosnap. Kliknij prawym przyciskiem myszy ikonę w zasobniku systemowym, wybierz Zakończ. Obserwuj, jak Twoja pamięć RAM spada o 600 MB.
  3. 0:30
    Uruchom instalator. Domyślna ścieżka instalacji, ponowne uruchomienie nie jest wymagane.
  4. 0:45
    Naciśnij Ctrl+Alt+5. Twoje pierwsze przechwycenie za pomocą tego samego skrótu klawiszowego, którego zawsze używałeś. Edytor otwiera się natychmiast.
  5. 0:60
    Gotowe. Wklej swoje dane uwierzytelniające SFTP/S3 w Ustawieniach, jeśli chcesz przesyłać pliki na serwer.
FAQ

Pytania dotyczące wycieku pamięci

Robię tylko 5 zrzutów ekranu dziennie. Czy wyciek nadal mnie dotyczy?

Mniej poważnie, ale tak. Pamięć w stanie bezczynności nadal rośnie, ponieważ Monosnap odpytuje schowek i zasobnik systemowy, nawet gdy nie przechwytujesz. Wzrost jest wolniejszy przy niskim użyciu, ale nigdy się nie zatrzymuje.

Czy ponowne uruchomienie aplikacji pomaga?

Tymczasowo. Zamknij i uruchom ponownie, a wrócisz do ~180 MB. Ale większość użytkowników, którzy zauważają wyciek, doszła do tego, ponieważ trzymają swoje narzędzie do zrzutów ekranu uruchomione przez cały dzień, a wielokrotne ponowne uruchamianie jest przeciwieństwem tego, czego chcą.

Co z Monosnap na macOS?

Wyciek jest mniej poważny na macOS, ponieważ model pamięci jest inny, ale użytkownicy nadal zgłaszają stopniowy wzrost. Kompilacja Maxisnap na macOS jest eksperymentalna. Dla Windows, przełącz się już dziś.

Twoja pamięć RAM Ci podziękuje

Maxisnap jest darmowy. Instalacja zajmuje 60 sekund. Te same skróty klawiszowe, których już używasz.

Pobierz Maxisnap

Powiązane: dlaczego zwolnił · naprawa zawieszania się · ogólna alternatywa