【发布时间】:2015-10-05 23:36:32
【问题描述】:
所以,在问了this 的问题之后,很快就发现重要的问题不是“我该怎么做”,而是“我应该”吗?
我们的客户正在从 Java7 迁移到 Java8(使用 Tomcat7)。 Java7 需要设置-XX:MaxPermSize,一些客户根据个人需求和用途将其最大值增加到安装程序设置的默认值以上。
我应该为已定义自定义最大值的客户设置-XX:MaxMetaspaceSize(之前的-XX:MaxPermSize 设置)吗?新安装呢?我们应该设置-XX:MaxMetaspaceSize 吗?
这样的决定有什么利弊?
【问题讨论】:
-
我明白,默认情况下,元空间是没有限制的。但是现在它在本机内存中,如果不设置限制,则有可能消耗所有系统内存。更好的是,我的应用程序抛出 OOM 或系统崩溃(没有明显的原因)?当系统崩溃从来没有风险时,通过添加 MaxMetaspaceSize 是否会增加 OOM 崩溃的可能性?
-
我会设置一个足够大的最大值,在正常情况下不会触发。我这么说的原因是,如果本机内存耗尽或发生疯狂交换,系统可能会表现得非常不稳定且难以控制。比 OOM 或 Java 冻结更糟糕。例如使用 2GB(期望系统至少有 2GB 的可用缓冲区)
-
@eckes 你能把它移到答案部分吗?值得考虑。
-
不是
--XX:MaxMetaspaceSize,而是-XX:MaxMetaspaceSize。只有一个 - 在 XX 之前
标签: tomcat memory-management java-8