Czy można zasugerować menedżerowi pamięci wirtualnej systemu Windows, aby wyciągnął konkretny proces z wymiany?
Sytuacja, w której często się znajduję, zwykle wykorzystuje około 50% pamięci RAM dla wszystkich normalnych programów, w szczególności IDE dla osadzonego obiektu docelowego wraz z powiązanym z nim debugerem.
Potem zostawiam proces głodny pamięci - np. Wireshark lub coś, co gromadzi dane przez weekend, wszystko zostaje zamienione - tak jak powinno. Po zakończeniu dużego procesu większość procesów zostaje zamieniona.
Następnie sporadyczne przerwy w zamianie procesu z powrotem powodują problemy z debuggerem, prawdopodobnie z powodu problemów z czasem w komunikacji między IDE a sprzętowym debuggerem. Tak więc kontrola nad urządzeniem docelowym może być sporadyczna, dopóki wystarczająca liczba prób nie usunie danych debugowania w IDE z powrotem z wymiany.
Odpowiedzi:
KerrekSB opracował specjalne narzędzie do tego celu:
/programming//a/2940209/684229
Jest dostępny w GiTHUB z plikami binarnymi: https://github.com/louisdx/unpage
Podczas uruchamiania pojawia się wiele błędów „Nie udało się odczytać jednego bajtu z 0x .... 000, błąd 299 (odczyt 0 bajtów)”, ale to nie jest problem, narzędzie działa świetnie.
źródło
After the big process is finished, most processes are left in swap.
. Prawdopodobnie zakończył już „proces głodny pamięci”.if (meminfo.Protect > 50) { std::cerr << meminfo.Protect << " - " << PAGE_GUARD << std::endl; }
tuż przed liniąReadProcessMemory
. PAGE_GUARD to 256 i mam 260 z uszkodzonymi stronami. Można więc pozbyć się błędów. Ktoś z pewną wiedzą na temat języków C ++ i stronicowania musi czytać bit PAGE_GUARD.Możesz użyć Process Lasso, aby nadać procesowi priorytet strony Pamięć :
Process Lasso ma dwie wersje: bezpłatną i komercyjną (18,95 USD z wersją próbną).
źródło