繁体   English   中英

Java堆内存大于TOP

[英]java heap memory is larger than TOP

我的程序使用-Xms10240m -Xmx10240m运行。 我使用top检查内存,大小为3.5g,它小于xms值。 使用顶部

但是,当我使用jmap -heap时,可以看到堆大小约为10g。 使用jmap

什么原因?

谢谢。

  1. -Xms选项用于JVM最小堆大小定义
  2. 顶部显示了使用的实际内存(VIRT / RES / SHR)过程

使用您的示例-Xms10g -Xmx10g ,当jvm启动时,它将要求操作系统分配10g内存,该内存将用于堆。 并且op-system会尝试为JVM分配内存(显示为VIRT),但是系统未保证u它将分配物理内存,可能会交换;)

但是您会发现VIRT仍然不是10g,原因是10g是用于大小的,JVM包含更多的堆,例如,堆栈,permgen(热点JDK8,openJDK似乎没有permgen,如果我错了请修复我),本机堆栈,代码,文件等。

而RES是采用真实的物理内存,它包含新对象,方法等,还不仅是堆得。

暂无
暂无

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

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