Как ОС справляется с утечками памяти - PullRequest
0 голосов
/ 09 сентября 2018

Я довольно много искал этот вопрос, но не смог найти точный запрос, хотя он кажется достаточно общим, чтобы его можно было где-то спросить и ответить.

Я хотел знать, что происходит после того, как процесс вызываетутечка памяти и прекращается.На мой взгляд, это не имеет большого значения из-за виртуальной памяти.После того, как все физические страницы все еще могут быть выделены другому / новому процессу, даже если он вызывал утечку памяти ранее (после того, как старый процесс вызвал утечку памяти)

Но я также где-то читал, что из-за утечек памяти вам нужно перезапустить вашсистема, и я не понимаю, почему ???

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

В современных операционных системах адресное пространство делится на пространство пользователя и пространство системы. Системное пространство одинаково для всех процессов.

Когда вы убиваете процесс, это уничтожает пространство пользователя для процесса. Если у приложения есть утечка памяти, уничтожение процесса устраняет утечку.

Однако операционная система также может выделять память в системном пространстве. В случае утечки памяти в распределении памяти системного пространства операционной системой процессы уничтожения не освобождают ее.

Это тип утечки памяти, который вынуждает вас перезагружать систему.

0 голосов
/ 09 сентября 2018

Рекомендованное значение: Операционные системы: три легкие части

В обычных ОС (например, Linux, Windows, MacOSX, Android) каждый процесс имеет собственное виртуальное адресное пространство (и кучную память, например, используемую для malloc или mmap, находится внутри этого виртуального адресного пространства), и когда процесс завершается, его все виртуальное адресное пространство уничтожается.

Таким образом, утечки памяти не переживают сам процесс.

Могут быть тонкие угловые случаи (например, утечки при использовании shm_overview (7) или shmget (2) ).

Прочитайте (для Linux) proc (5) , попробуйте cat /proc/self/maps и посмотрите также this . Научитесь использовать valgrind и Address Sanitizer .

Читайте также о Сборка мусора . Это весьма актуально.

...