我当前的应用程序在2GB内存正常GC循环上运行.
我想将JVM内存增加到4GB以提高应用程序性能.
会不会加速GC的时间?如果是,将会影响多少性能.调整GC是他们的任何好的艺术吗?
大堆 == 长时间的 GC 暂停。
我已经看到 GC在大约 10G 大小的堆上停止了几分钟。
另一方面,较小的堆意味着更频繁(但更短)的 GC 周期。这个问题没有好的通用答案——这完全取决于您的应用程序(高频交易应用程序?小猫网络服务器?)、硬件、对象流失等的需求。
关于这个主题的一些很好的资源可供阅读:
简答
是的,时间会增加.更大的堆=更长的暂停时间
答案很长
有几个因素需要考虑.您是如何配置GC运行的?你的年轻一代有多大?你多久看一次GC的完整版?
如果您很少看到完整的GC,则差异可以忽略不计.如果将GC活动记录到日志,则可以看到部分GC的暂停时间非常快.部分GC上2GB和4GB之间的差异大约为0.1s.要记录GC活动,您可以使用以下参数-XX:+PrintGCDetails -verbose:gc -Xloggc:/log/path/gc.log.有许多工具可以为您读取此GC日志,提供图表和统计信息,如吞吐量和总暂停时间.
如果您经常看到Full GC,那就是为什么要添加更多内存,那么您可能需要考虑分析应用程序而不是看看是什么占用了所有内存.使用更大的堆,这些问题只会导致更长的GC,直到您解决潜在的问题.
最后,您需要尝试各种配置,正确测试并将最适合您的生产环境放入生产环境中.
| 归档时间: |
|
| 查看次数: |
4028 次 |
| 最近记录: |