проблема памяти смолы

Я запустил смолу 3.0.28, используя параметр jvm:

    -Xms6300M -Xmx6300M -Xss128k -XX:ThreadStackSize=256 -XX:MaxPermSize=128M 
-XX:PermSize=128M -verbose:gc -XX:+PrintGCDetails -XX:+UseParallelGC 
-XX:+PrintGCTimeStamps

но оставшаяся память превышает 10 ГБ

Что не так со смолой? Я использую jmap -heap, и результат выглядит следующим образом: он показывает, что память кучи jvm находится в нормальном состоянии.

Attaching to process ID 9456, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 10.0-b22

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

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 6606028800 (6300.0MB)
   NewSize          = 2686976 (2.5625MB)
   MaxNewSize       = -65536 (-0.0625MB)
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 134217728 (128.0MB)
   MaxPermSize      = 134217728 (128.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 2155151360 (2055.3125MB)
   used     = 1966086568 (1875.0062637329102MB)
   free     = 189064792 (180.30623626708984MB)
   91.22730795112228% used
From Space:
   capacity = 23265280 (22.1875MB)
   used     = 13849352 (13.207771301269531MB)
   free     = 9415928 (8.979728698730469MB)
   59.527983329665496% used
To Space:
   capacity = 23068672 (22.0MB)
   used     = 0 (0.0MB)
   free     = 23068672 (22.0MB)
   0.0% used
PS Old Generation
   capacity = 4404019200 (4200.0MB)
   used     = 3854164456 (3675.6176528930664MB)
   free     = 549854744 (524.3823471069336MB)
   87.51470602126349% used
PS Perm Generation
   capacity = 134217728 (128.0MB)
   used     = 53393152 (50.919677734375MB)
   free     = 80824576 (77.080322265625MB)
   39.78099822998047% used

person haitao.yao    schedule 25.04.2011    source источник


Ответы (1)


Что именно вы имеете в виду под «сохраненной памятью»? Я предполагаю, что вы имеете в виду память, выделенную самим процессом:

Куча не будет использовать больше, чем вы указали (за исключением некоторой фрагментации, но это незначительно). «Другие объекты» в процессе используют это пространство. Хотя может быть что-то не так со смолой или JVM, особенно если объем памяти постоянно увеличивается в течение недель, объем памяти, используемый смолой и hvm, также может быть нормальным.

Взгляните на мою попытку ответить на другой похожий вопрос:

Потребление памяти JVM в два раза больше размера кучи

Вкратце: убедитесь, что вы смотрите на правильный размер процесса. Я обычно выделяю 1–1,5 ГБ пространства без кучи java для смолы в 32-битной системе Debian (что, конечно, заставляет ваши 4 ГБ звучать много).

Кроме того:
-Xss128k -XX: ThreadStackSize = 256

будет интерпретироваться как

-XX: ThreadStackSize = 128 -XX: ThreadStackSize = 256,

так что вы можете удалить один из них ... (см. http://mail.openjdk.java.net/pipermail/hotspot-dev/2011-June/004272.html)

person vegolasse    schedule 17.07.2011