繁体   English   中英

Java堆大小比-Xmx大20倍-怎么可能?

[英]Java heap size is 20x greater then -Xmx - How is that possible?

Elasticsearch实例在具有32个核心CPU和120gb内存的VM上运行。

在调试性能问题时,我发现htop结果

内存使用 在此处输入图片说明

弹性搜索Java进程消耗52%的内存〜60gb 在此处输入图片说明

jstat结果

jstat -gc 11660
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
195904.0 195904.0  0.0   30111.4 1567680.0 1146433.0 59906496.0 1432277.9  73684.0 63888.5  0.0    0.0   2122077 150951.979   6      0.837 150952.816

对于Java进程, -Xms2g-Xmx2g设置清晰可见。

这怎么可能 ? 内存使用率如何超出-Xmx2g

top和htop没有显示的是JVM堆的级别,它与Java进程消耗的总物理内存不同。

在下面,Lucene会将索引段文件直接映射到内存中,而无需利用堆。 因此,在您的Java流程中,Elasticsearch本身可能会利用2GB的堆,但是底层的Lucene库可能会消耗更多的内存,具体取决于需要加载到内存中的段的大小。

关于同一主题的另一个答案: https : //stackoverflow.com/a/35232221/4604579

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM