【问题标题】:Memory not beeing freed while indixing using solrj使用 solrj 进行索引时未释放内存
【发布时间】:2013-05-17 03:17:16
【问题描述】:

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

【问题讨论】:

  • 您是指 JVM 拥有的内存还是您查看过 JVM - 使用 VisualVM 之类的工具(可以在您的 JAVA_HOME/bin 中找到) - 您可以看到内存是还被 solr 持有?
  • 内存由包含 solr 战争的服务器和索引数据战争的应用程序持有。我也没有使用 VisualVM

标签: java memory-management solr jvm solrj


【解决方案1】:

正如你所说的JVM持有内存,我认为你有JVM sending back memory to OS中阐述的问题

要解决这个问题,您需要按照 Michael Borgwardt 在那里写道:

如果你想让 JVM 更急切地将内存返回给操作系统,你可以使用tuning parameters of the Oracle JVM,特别是 -XX:MaxHeapFreeRatio 和 -XX:MinHeapFreeRatio

【讨论】:

  • 但是这个选项是否适用于 jdk_JRockit?我也读到这也与我们使用 Linux 的操作系统有关。
  • 不,这些命令行参数不适用于 jrockit。但据我所知 (docs.oracle.com/cd/E13188_01/jrockit/docs142/intro/…) jrockit 应该开箱即用地释放堆。所以我建议你检查一下你的 solrj 例程中是否有内存泄漏。
【解决方案2】:
猜你喜欢
  • 2018-08-27
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多