2013-04-17 3 views
8

Пожалуйста, скажите мне назначение этих параметров. После того, как я подумал: MinHeapFreeRatio сообщает, что «заданный минимальный процент пространства будет свободен в памяти кучи после GC» и MaxHeapFreeRatio сообщает, что «не более указанного процента пространства будет свободным в памяти кучи после GC «[если избыточная свободная память превышает указанный процент, то эта память будет возвращена в ОС]Какова цель -XX: MinHeapFreeRatio и -XX: MaxHeapFreeRatio

Когда я пробовал эти параметры с 10 как значение для обоих, даже там, где имеется более 80 процентов свободной кучной памяти, он не был выпущен обратно в ОС.

Детали: Java HotSpot (TM) 64-разрядного сервера VM (1.5.0_15-b04, смешанный режим) ParallelGC (иначе известный как пропускная способность коллектора, который является коллекционером по умолчанию в классе сервера VM) я указанный -Xms50M и -Xmx1000M как аргументы jvm ОС: Windows 7 Professional (память 8 ГБ 64-разрядная ОС)

Примечание: я просто попытался использовать SerialGC, эти минимальные и максимальные параметры соотношения кучи были проигнорированы.

+0

Я предполагаю, что он устанавливает диапазон процентов, не так ли? не должны устанавливаться в 10, но для значений, таких как: 'MinHeapFreeRatio = 10' и' MaxHeapFreeRatio = 90', надеюсь, что я правильно понял. –

ответ

2

Java очень редко выпускает память обратно в ОС. Вообще говоря, приложения используют больше памяти с течением времени, а не меньше. Вы уверены, что память настолько ограничена, что вам это нужно? Вы уверены, что проверяете резидентную память, а не объем виртуальной памяти, который будет в 1,2 раза больше в вашем случае.

+1

yes peter Я проверил использование памяти с помощью VisualVM. И я думаю, что ParallelGC проигнорирует эти параметры, он просто динамически изменяет размеры молодых и старых поколений на основе «времени паузы» и «пропускной способности». https://blogs.oracle.com/jonthecollector/entry/it_s_not_magic –

Смежные вопросы