Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么PermSize和MaxPermSize的设置值和实际值不同?_Java_Tomcat_Jvm_Out Of Memory_Permgen - Fatal编程技术网

Java 为什么PermSize和MaxPermSize的设置值和实际值不同?

Java 为什么PermSize和MaxPermSize的设置值和实际值不同?,java,tomcat,jvm,out-of-memory,permgen,Java,Tomcat,Jvm,Out Of Memory,Permgen,我使用tomcat的JAVA_OPTS变量设置了PermSize和MaxPermSize的值,如下所示 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" 但是,当我使用命令jmap-heap[processid]检

我使用tomcat的JAVA_OPTS变量设置了PermSize和MaxPermSize的值,如下所示

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"
但是,当我使用命令jmap-heap[processid]检查perm gen的实际大小时,它们显示为

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**
与使用属性PermSize和MaxPermSize分配的空间相比,为什么permgen空间的实际分配有所不同?

附加信息:安装tomcat服务器的linux机器的RAM为:

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

Jenkins构建过程中丢失了setenv.sh文件,该文件从tomcat.env获取自定义用户配置,因此导致了问题。

我猜您只是指定了一个与总堆相比过大的数字。为什么您希望perm gen的大小是整个堆的一半?@praveen您使用的Java版本是什么?
17592186044415 MB
??可能没有考虑您的变量。服务器看起来内存也很低。因此您设置了一些环境变量。你把那些放在哪里了?你把它们导出了吗?你是如何推出Tomcat的?