我是生产中的ElasticSearch,并使用Prometheus抓取指标。查看图表,我可以看到jvm_buffer_pool指标不断增长,直到最终崩溃
据我了解,缓冲池在GC之外,但是如何清理呢?
答案 0 :(得分:1)
JVM的Direct ByteBuffers位于堆对象上,这些对象代理堆外内存。即使堆外内存为1 GB,ByteBuffer也为数十个字节。当GC由于不再引用该代理对象而对其进行清理时,也会释放堆外内存。
如果未释放堆外内存,是因为;
我会尝试允许更多的直接内存以查看是否有帮助。 -XX:MaxDirectMemorySize=64g
或任何您可以保留的东西。