Java 使用solrj进行Indizing时未释放内存

Java 使用solrj进行Indizing时未释放内存,java,memory-management,solr,jvm,solrj,Java,Memory Management,Solr,Jvm,Solrj,我们开始使用solrj从数据库中索引数据,从数据库中检索大约100万条记录,然后使用java对记录进行处理。 但我们面临一些记忆问题。 当我们开始索引过程时,内存开始增长,达到7 G。问题是索引过程完成,但内存没有减少7 G的保留分配。您应该能够从以下链接找到问题的答案: 正如您所说,JVM持有内存,我认为您遇到了中详细阐述的问题 要解决这个问题,你需要按照Michael Borgwardt在那里写的那样做: 如果您希望JVM更急切地将内存返回操作系统,可以使用-XX:MaxHeapFree

我们开始使用solrj从数据库中索引数据,从数据库中检索大约100万条记录,然后使用java对记录进行处理。 但我们面临一些记忆问题。
当我们开始索引过程时,内存开始增长,达到7 G。问题是索引过程完成,但内存没有减少7 G的保留分配。

您应该能够从以下链接找到问题的答案:


正如您所说,JVM持有内存,我认为您遇到了中详细阐述的问题

要解决这个问题,你需要按照Michael Borgwardt在那里写的那样做:

如果您希望JVM更急切地将内存返回操作系统,可以使用-XX:MaxHeapFreeRatio和-XX:MinHeapFreeRatio


你是指JVM所拥有的内存,还是说你用VisualVM之类的工具(可以在JAVA_HOME/bin中找到)查看过JVM-您可以看到,内存仍然由solr保留?内存由包含solr war的服务器和为数据战编制索引的应用程序保留。此外,我没有使用VisualMBUT此选项是否与jdk_JRockit一起使用?此外,我还了解到这与我们使用Linux时的操作系统有关。不,这些命令行参数不适用于jrockit。但就我阅读的()jrockit而言,它应该将堆从盒子中释放出来。因此,我建议您检查solrj例程中是否存在内存泄漏。