JVM缓冲池只会增长

时间:2018-10-02 11:05:44

标签: elasticsearch jvm

我是生产中的ElasticSearch,并使用Prometheus抓取指标。查看图表,我可以看到jvm_buffer_pool指标不断增长,直到最终崩溃

据我了解,缓冲池在GC之外,但是如何清理呢?

1 个答案:

答案 0 :(得分:1)

JVM的Direct ByteBuffers位于堆对象上,这些对象代理堆外内存。即使堆外内存为1 GB,ByteBuffer也为数十个字节。当GC由于不再引用该代理对象而对其进行清理时,也会释放堆外内存。

如果未释放堆外内存,是因为;

  • 它在堆中的代理被保留。即需要内存。
  • ElasticSearch正在直接分配堆外内存,并且库有泄漏(不太可能)

我会尝试允许更多的直接内存以查看是否有帮助。 -XX:MaxDirectMemorySize=64g或任何您可以保留的东西。