【发布时间】:2016-11-14 18:31:45
【问题描述】:
有什么区别
-Xms4096m
-Xmx2048M
-XX:MaxPermSize=712M
我对这两个-Xmx2048M 和-XX:MaxPermSize=712M 感到困惑
如果我使用 -Xmx2048M 或 -Xmx2048m 会发生
【问题讨论】:
有什么区别
-Xms4096m
-Xmx2048M
-XX:MaxPermSize=712M
我对这两个-Xmx2048M 和-XX:MaxPermSize=712M 感到困惑
如果我使用 -Xmx2048M 或 -Xmx2048m 会发生
【问题讨论】:
Java 对象位于称为 堆 的区域中,而诸如类对象和方法对象之类的元数据位于 永久代 或 Perm Gen 区域。永久代不是堆的一部分。
堆是在 JVM 启动时创建的,并且在应用程序运行时可能会增加或减少大小。当堆满时,垃圾会被收集。在垃圾回收期间,不再使用的对象被清除,从而为新对象腾出空间。
-Xmssize指定初始堆大小。
-Xmxsize指定最大堆大小。
-XX:MaxPermSize=size 设置最大永久代空间大小。此选项在 JDK 8 中已弃用,并被 -XX:MaxMetaspaceSize 选项取代。
大小以字节表示。附加字母k 或K 表示千字节,m 或M 表示兆字节,g 或G 表示千兆字节。
How is the java memory pool divided?
Java (JVM) Memory Model – Memory Management in Java
【讨论】:
java.lang.OutOfMemoryError: PermGen space 错误时增加 perm gen。如果垃圾收集经常触发,您可能需要使用-xmx 增加堆内存,但请注意,可用于 OS 磁盘缓存的内存将减少。看看rimuhosting.com/knowledgebase/linux/java/-Xmx-settings 和Tuning Tomcat Performance For Optimum Speed。