Сборка мусора :как рассчитывается пространство Эдема (и другие размеры поколений )?

Мне нужна помощь в понимании того, как числа, связанные с GC -, которые я получаю от jmapи jstat, связаны с настройками, которые я передаю в java. Я запускаю приложение (solr )со следующими настройками на сервере с 16 ГБ памяти:

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled 
-Xms12144m -Xmx12144m 
-XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops

Вывод jmapначинается:

Concurrent Mark-Sweep GC

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 12733906944 (12144.0MB)
   NewSize          = 2686976 (2.5625MB)
   MaxNewSize       = 130809856 (124.75MB)
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 4
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 176160768 (168.0MB)

Почему NewSize, MaxNewSize, OldSizeи PermSizeтакие маленькие, когда MaxHeapSizeвелико? Разве не должно NewSize + OldSize = heap size? И не должен ли общий размер кучи приближаться к MaxHeapSize? Почему NewSizeровно половина OldSize, когда NewRatioустановлено на 4?

Остальная часть вывода jmapприведена ниже. Он соответствует приведенному выше и включает раздел concurrent mark-sweep generation, который я также не знаю, как интерпретировать.

Кроме того, журналы GC указывают, что «желаемый размер оставшегося в живых» составляет 6,2 МБ, что также странно, учитывая, что я понимаю, что -XX:SurvivorRatio=8должен сделать пространство для оставшегося в живых 1/8 от NewSize.

Наконец, я вижу только сообщения ParNewв своем журнале GC,как я понимаю, это GC для Эдема.


Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 117768192 (112.3125MB)
   used     = 20402232 (19.45708465576172MB)
   free     = 97365960 (92.85541534423828MB)
   17.324059793666528% used
Eden Space:
   capacity = 104726528 (99.875MB)
   used     = 16408336 (15.648208618164062MB)
   free     = 88318192 (84.22679138183594MB)
   15.667793359863893% used
From Space:
   capacity = 13041664 (12.4375MB)
   used     = 3993896 (3.8088760375976562MB)
   free     = 9047768 (8.628623962402344MB)
   30.624128945508794% used
To Space:
   capacity = 13041664 (12.4375MB)
   used     = 0 (0.0MB)
   free     = 13041664 (12.4375MB)
   0.0% used
concurrent mark-sweep generation:
   capacity = 12603097088 (12019.25MB)
   used     = 7903352408 (7537.22420501709MB)
   free     = 4699744680 (4482.02579498291MB)
   62.70960505037411% used
Perm Generation:
   capacity = 45903872 (43.77734375MB)
   used     = 27759192 (26.473228454589844MB)
   free     = 18144680 (17.304115295410156MB)
   60.472441191889% used
10
задан seb 6 August 2012 в 14:31
поделиться