首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内存使用峰值不会超过限制

内存使用峰值不会超过限制
EN

Stack Overflow用户
提问于 2012-04-10 06:24:32
回答 1查看 619关注 0票数 6

我看到在使用-Xmx2g时,峰值内存达到1G,并且执行主要的收集(标记扫描收集器)。使用-Xmx3g,它达到了1.5G,并进行了主要的收集。有了-Xmg4g,它可以达到2G并进行主要的收集。但是,从这里开始,我尝试将最大内存增加到6G、8G、12G,所有峰值内存达到2G的时候都会进行主要的收集。

如何使用beyond 2G?我没有遇到任何这样的设置。-Xms在这里很重要吗?对于那些-Xmx,我做了-Xms half of -Xmx。

我使用的是Jetty,Java 1.6.024。

更新:是的,我使用的是64位JVM。我使用的JVM选项是:-Xmx6g,-Xms3g,-XX:MaxPermSize=256m我确定峰值内存的方法是通过查看JConsole中的内存图。它达到2G并下降(主要收集)。旧的Gen达到1.5G最大值,然后下降。

谢谢,婴儿车。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-10 16:25:46

你有三个内存区域,伊甸园,幸存者和永久空间。

我怀疑的是,随着最大大小的增加,永久空间或伊甸园空间都不会增长。

这两个区域之所以重要,是因为当永久空间填满一个完整的GC时(我怀疑这个大小正在增长),当eden空间填满,而survivor空间中没有足够的空间来复制所有剩余的对象时,一个完整的GC也会被触发。

如果这是问题的原因,除非您可以减少创建的数量,否则您正在创建大量的中等存活对象,这很可能是一个性能问题。另一种选择是指定一个更大的新大小,这会增加伊甸园的大小。

试试-mx12g -XX:NewSize=10g - verbosegc

最后一个选项将为您提供清理后各个空间的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10080657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档