проблем със смола памет

Стартирах смолата 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 GB

Какво не е наред със смолата? Използвам jmap -heap и изходът е както по-долу: показва, че jvm heap паметта е в нормално състояние.

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)


Какво точно имаш предвид "паметта ми е запазена"? Предполагам, че имате предвид паметта, разпределена от самия процес:

Купчината няма да използва повече, отколкото сте посочили (с изключение на известна фрагментация, но това е незначително). „Други обекти“ в процеса използват това пространство, въпреки че може да има нещо нередно с resin или JVM, особено ако паметта се увеличава стабилно в продължение на седмици, количеството памет, използвано от resin и hvm, също може да е нормално.

Вижте опита ми да отговоря на друг подобен въпрос:

Потреблението на JVM памет е двойно по-голямо от heapsize

Накратко: Уверете се, че търсите правилния размер на процеса. Обикновено използвам 1-1,5 GB пространство без java-heap за resin на 32-битова система Debian (което разбира се прави вашите 4 GB да звучат много).

Освен това:
-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