我在生产中使用ElasticSearch,并使用Prometheus抓取指标。查看这些图,我可以看到jvm_buffer_pool指标不断增长,直到最终崩溃
据我了解,缓冲池在GC之外,但是如何清理呢?
最佳答案
JVM的Direct ByteBuffers位于堆对象上,用于代理堆外内存。即使堆外内存为1 GB,ByteBuffer也为数十个字节。当GC由于不再引用该代理对象而对其进行清理时,也会释放堆外内存。
如果没有释放堆外内存,那是因为;
我会尝试允许更多的直接内存以查看是否有帮助。
-XX:MaxDirectMemorySize=64g
或您可以保留的任何内容。
关于elasticsearch - JVM缓冲池只会增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52607091/