Java VM - освобожденная память возвращается в ОС? - PullRequest
2 голосов
/ 10 марта 2010

Если во время выполнения Java мое приложение освобождает память, освобождает ли время выполнения память обратно в ОС? Или только вернуться к моему процессу?

Ответы [ 2 ]

4 голосов
/ 10 марта 2010

Это зависит от реализации JVM и не указано в спецификации.

Sun JVM будет придерживаться его в качестве первого шага. Если определенный (настраиваемый) процент выделенной памяти не используется, он вернет часть ее ОС (на поведение влияют параметры MinHeapFreeRatio и MaxHeapFreeRatio ).

1 голос
/ 10 марта 2010

Сначала вернемся к процессу, но, в конце концов, вернемся к ОС. Память, выделенная GC, находится в большом смежном фрагменте (куче) или наборе блоков, и «освобождение» GC просто освобождает выделение в куче, но не обязательно обратно в ОС. После сжатия GC виртуальная машина может вернуть часть памяти ОС.

GC хочет удерживать определенное количество пространства, чтобы он мог быстро обслуживать будущие "новые" запросы памяти. Поэтому GC как можно реже обращается к ОС с запросом памяти в больших сегментах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...