Почему заданное и фактическое значение PermSize и MaxPermSize отличаются?


Я установил значения PermSize и MaxPermSize, используя переменную JAVA_OPTS tomcat, как показано ниже

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

И имеют значения Xms и Xmx, установленные как

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

Но когда я проверяю фактический размер perm-gen с помощью команды jmap-heap [ process id ], они появляются как

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**

Почему фактическое распределение пространства permgen отличается от того, что было выделено с помощью атрибутов PermSize и MaxPermSize ?

Дополнительная информация: оперативная память linux-машина, на которой установлен сервер tomcat:

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

1 ответ:

Setenv.sh файл был пропущен во время сборки Дженкинса, и этот файл был источником пользовательских конфигураций пользователя из tomcat.env таким образом вызывает проблему.