java - OutOfMemoryError : Java heap space in solr, 但堆未满

标签 java solr heap-memory

前提:我是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/

相关文章:

java - 如何在 Java 中使用 Scanner 读取文本文件中的特定字符?

sorting - 我需要按相关性对从 SOLR 返回的方面进行排序

http - Solr 通过 HTTP 上的游标将文档获取为 CSV

java - 如何使用 Java 获取总 JVM 堆大小、已用内存

c - 堆问题,PC 卡住

java - 在 Java 中将 UTC 时间转换为 IST 时间在 LOCAL 中有效,但在 CLOUD SERVER 中无效

java - 在 Android 的 Web View 中没有出现警报?

java ReplaceAll(regex, replacement) 正则表达式命令

当随机字段值改变时,Solr 会更改文档的分数

c# - C# 中的装箱和拆箱