【发布时间】:2017-04-03 19:41:43
【问题描述】:
环境:
- AWS R4.XLarge(4vCPU,30GB RAM)
- Windows 2012R2
- Tomcat 7,jdk-8u102
首先,我不是开发人员,所以请耐心等待。最大堆设置为 24GB 或 16GB 时,Tomcat 仅使用 4GB,一些应用程序抛出 java.lang.OutOfMemoryError: GC 开销限制超出。我的预感是 GC 正在“阻止”Java 访问更多内存。开发者为 GC 启用的默认设置是:
call :set_XX_java_opts "+UseConcMarkSweepGC"
我研究了一下,觉得添加这些参数可以解决这个问题:
call :set_XX_java_opts "+CMSParallelRemarkEnabled"
call :set_XX_java_opts "+ScavengeBeforeFullGC"
call :set_XX_java_opts "+CMSScavengeBeforeRemark"
我走对了吗?
谢谢,
弗雷德
【问题讨论】:
-
你能分享所有的JVM参数吗?
-
安装 64 位 Java 而不是 32 位。
-
如果 tomcat 只使用 4 GB,为什么有些应用程序会抛出 otofmemory ?获取堆转储并分析堆中发生了什么,并确定那里发生了什么。一个不错的链接,您可能想参考plumbr.eu/outofmemoryerror/gc-overhead-limit-exceeded
标签: java tomcat garbage-collection