2016-03-30 2 views
3

J'ai définir les valeurs de PermSize et MaxPermSize en utilisant la variable JAVA_OPTS de tomcat comme ci-dessousPourquoi la valeur définie et la valeur réelle de PermSize et MaxPermSize sont-elles différentes?

JAVA_OPTS="$JAVA_OPTS -XX:PermSize=512M" 
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=512M" 

et ont les valeurs de Xms et Xmx défini comme

JAVA_OPTS="$JAVA_OPTS -Xms1024M" 
JAVA_OPTS="$JAVA_OPTS -Xmx1024M" 

mais quand je vérifie la taille réelle perm-gen en utilisant la commande jmap -heap [id processus], ils apparaissent comme

Heap Configuration: 
    MinHeapFreeRatio = 40 
    MaxHeapFreeRatio = 70 
    MaxHeapSize  = 792723456 (756.0MB) 
    NewSize   = 1310720 (1.25MB) 
    MaxNewSize  = 17592186044415 
    OldSize   = 5439488 (5.1875MB) 
    NewRatio   = 2 
    SurvivorRatio = 8 
    **PermSize   = 21757952 (20.75MB)** 
    **MaxPermSize  = 85983232 (82.0MB)** 
    G1HeapRegionSize = 0 (0.0MB) 


Perm Generation: 
    **capacity = 69271552 (66.0625MB)** 
    **used  = 69247376 (66.03944396972656MB)** 
    **free  = 24176 (0.0230560302734375MB)** 
    **99.96509967035242% used** 

Pourquoi la distributio réelle n de l'espace permgen différent quand comparé à ce qui a été alloué en utilisant les attributs PermSize et MaxPermSize?

Informations complémentaires: la RAM de la machine linux sur lequel le serveur tomcat est installé est:

   total  used  free  shared buffers  cached 
Mem:  3089928 3006592  83336   0  67828 1874144 
-/+ buffers/cache: 1064620 2025308 
Swap:  1020088  112 1019976 
+0

Je suppose que vous avez simplement spécifié un nombre trop grand par rapport au tas total. Pourquoi voudriez-vous une moitié perm aussi grande que l'ensemble de votre tas? – biziclop

+0

@praveen Quelle est la version de Java que vous utilisez? –

+0

'17592186044415 MB' ??? – Thomas

Répondre

1

Le fichier setenv.sh a été manquée lors de la Jenkins construire et ce fichier se procurait les configurations utilisateur personnalisées de Tomcat.env causant ainsi le problème.