前提:我是java问题的新手,但我正在尝试理解。
我在高负载下的 SOLR 实例中遇到“OutOfMemoryError:Java 堆空间”(许多并发请求处于只读状态)。
我发现这些情况下的一般解决方案是使用 -Xmx
参数增加最大堆大小,但是查看 jconsole 上的数字,我发现只有 1G 总堆的 50%用来。只有 Eden 空间和 Survivor 空间有时会达到 100%,但我知道这是正常的。
在某些情况下,即使堆空间未满,我们也会出现 OutofMemoryError 吗?我可以设置哪些参数来避免这种情况?
最佳答案
只需检查您是否在 OSx64 上使用 JREx32。它可能会导致您的问题。 我刚刚在查看日志后启动了我的 solr 服务器。
查看 java 转储日志,如下所示:
tenured generation total 174784K, used 174765K [0x09750000, 0x14200000, 0x14200000) the space 174784K, 99% used [0x09750000, 0x141fb588, 0x141fb600, 0x14200000)
似乎垃圾收集器对于 JRE 和操作系统不同位中的一些 Java 生成来说工作得不太好。
关于java - OutOfMemoryError : Java heap space in solr, 但堆未满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29283788/