首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我增加内存堆,是否会增加GC时间

如果我增加内存堆,是否会增加GC时间
EN

Stack Overflow用户
提问于 2011-06-07 22:34:26
回答 6查看 5K关注 0票数 3

我当前的应用程序运行在2 GC内存上,正常的GC周期。

我想将JVM内存增加到4 4GB,以提高应用程序性能。

它会增加GC时间吗?如果是,性能将受到多大影响。他们有没有好的文章来调优GC?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-07 23:05:46

Short Answer

是的,时间会增加。更大的堆=更长的暂停时间

Long Answer

有几个因素需要考虑。你是如何配置你的GC运行的?你的年轻一代有多大?你多久会看到一次完整的GC?

如果你很少看到完整的GC,那么差异将是微不足道的。如果您将GC活动记录到日志中,您可以看到部分GC的暂停时间非常快。在部分GC上,2 4GB和4 4GB之间的差异约为0.1s。要记录GC活动,可以使用以下参数-XX:+PrintGCDetails -verbose:gc -Xloggc:/log/path/gc.log。有很多工具可以为你读取GC日志,提供图表和统计数据,如吞吐量和总暂停时间。

如果您经常看到满GC,这就是您想要添加更多内存的原因,那么您可能需要考虑分析应用程序,以查看是什么占用了所有内存。使用更大的堆,这些问题只会导致更长的GC,直到您修复了底层问题。

最后,您需要尝试各种配置,正确测试并将最适合您的配置放入您的生产环境中。

票数 6
EN

Stack Overflow用户

发布于 2011-06-07 22:53:00

大型堆==长时间GC暂停。

我已经看到GC在大约10G大小的堆上停止了几分钟。

另一方面,较小的堆意味着更频繁(但占用时间更短)的GC周期。这个问题没有很好的通用答案--这完全取决于你的应用程序的需求(高频交易应用程序?kitten webserver?)、硬件、对象搅动等。

关于这个主题,有几个很好的资源可以阅读:

  • http://www.oracle.com/technetwork/java/faq-140837.html
  • http://java.sun.com/developer/technicalArticles/Programming/turbo/
票数 4
EN

Stack Overflow用户

发布于 2011-06-07 22:46:06

没有直接的答案,因为答案取决于你的应用程序在内存方面做了什么。

但是,您应该考虑到,如果您增加了jvm内存,那么您的应用程序将有更多的内存...如果所有的内存都被使用了,那么你的gc会被更频繁地调用(增加了GC时间)

增加内存并不总是最好的解决方案,优化对象使用并回收未使用的对象可能是更好的解决方案。

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

https://stackoverflow.com/questions/6266860

复制
相关文章

相似问题

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