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

标签 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 [process id] 检查 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**

为什么 permgen 空间的实际分配与使用属性 PermSize 和 MaxPermSize 分配的空间不同?

附加信息:安装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 获取自定义用户配置,从而导致问题。

关于java - 为什么 PermSize 和 MaxPermSize 的设置值和实际值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306622/

相关文章:

java - 如何读取 Stringbuffer 中具有 html 表之类数据的 Read .xls 文件?

java - 使用servlet获取网站返回的参数

java - 如何修改 HttpUrlConnection 的 header

java - 数字管理器 JAVA UML

wordpress - 如何在JSP中创建一个新闻博客系统?

object - 为什么 JVM GC 喜欢不可变对象(immutable对象)?

java - 如何解决 WebLogic 服务器 BEA-000117 和 BEA-101162 错误?

java - JVM 垃圾收集应用程序停止时间差异

java - java中读取和写入同一个文件

java - 在 vscode 中对源/web 内容修改自动将 .war 部署到 Tomcat