【发布时间】:2015-05-30 18:48:47
【问题描述】:
前提:我是java问题的新手,但我正在努力理解。
我在高负载下的 SOLR 实例中遇到“OutOfMemoryError: Java heap space”(许多并发请求处于只读状态)。
我发现在这些情况下的一般解决方案是使用-Xmx 参数增加最大堆大小,但是查看 jconsole 上的数据我发现只有 1G 总堆的 50% 被使用。只有伊甸空间和幸存者空间有时会达到100%,但我理解这是正常的。
在某些情况下,即使堆空间未满,我们也会在堆空间中出现 OutofMemoryError?我可以设置哪些参数来避免这种情况?
【问题讨论】:
-
你确定不是永久区域被填满了吗?
-
是的,solr 日志说:
java.lang.OutOfMemoryError: Java heap space -
@AniketThakur 如果 permgen 区域被填充而不是堆错误,您将收到 permgen 错误
-
好的,那么只有堆被填满了。是的,当伊甸园空间被填满时,它的内容将与其他幸存者空间的内容一起转移到幸存者空间之一。并且只有在 YG 的全部 GC 内容被移动到 OG 之后。
-
我建议从 jconsole 或 jvisualvm 进行堆转储以查看实际的堆使用情况。
标签: java solr heap-memory