Java eden space не в 8 раз больше s0 space - PullRequest
0 голосов
/ 08 декабря 2018

в соответствии со значениями параметра doc для drac по умолчанию для SurvivorRatio - 8, это означает, что каждое пространство оставшихся в живых будет составлять одну восьмую размера пространства eden.но в моем приложении это не работает

$ jmap -heap 48865
Attaching to process ID 48865, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.45-b02

using thread-local object allocation.
Parallel GC with 8 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 4294967296 (4096.0MB)
   NewSize                  = 89128960 (85.0MB)
   MaxNewSize               = 1431306240 (1365.0MB)
   OldSize                  = 179306496 (171.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 67108864 (64.0MB)
   used     = 64519920 (61.53099060058594MB)
   free     = 2588944 (2.4690093994140625MB)
   96.14217281341553% used
From Space:
   capacity = 11010048 (10.5MB)
   used     = 0 (0.0MB)
   free     = 11010048 (10.5MB)
   0.0% used
To Space:
   capacity = 11010048 (10.5MB)
   used     = 0 (0.0MB)
   free     = 11010048 (10.5MB)
   0.0% used
PS Old Generation
   capacity = 179306496 (171.0MB)
   used     = 0 (0.0MB)
   free     = 179306496 (171.0MB)
   0.0% used

7552 interned Strings occupying 605288 bytes.

, но в VisualVM пространство eden составляет 1,332 ГБ, а S0 - 455 М, eden только в 3 раза больше, чем S0, а не 8

* 1006.*enter image description here

1 Ответ

0 голосов
/ 08 декабря 2018

Вы не отключили -XX:-UseAdaptiveSizePolicy и не установили -Xms равным -Xmx, поэтому JVM может изменять размер поколений кучи (и пространств оставшихся в живых) во время выполнения.В этом случае предполагаемый максимальный размер Survior составляет

MaxSurvivor = NewGen / MinSurvivorRatio

, где -XX:MinSurvivorRatio=3 по умолчанию.Примечание: это приблизительный максимум, а не фактический размер.

См. Также этот ответ .

...