为什么xmx和top之间存在内存使用差异?

时间:2012-08-12 13:08:43

标签: java memory jvm

我将jvm的xmx设置为4 G,但是在运行一段时间后,当我使用top来查看内存时,它显示了使用12 G内存的过程。

那么xmx究竟意味着什么?如果我想将jvm内存限制为4 G,我该怎么办?

命令行:-server -Xms4g -Xmx4g

另一个相关问题:)

如果gc发生了,那么年轻一代中不再使用的对象的空间是否会被JVM不可避免地释放出来?或者其中一些留给下一个gc?

感谢

1 个答案:

答案 0 :(得分:6)

JVM的-Xmx选项指定maximum size of the Java garbage collected heap。它不限制JVM使用的内存大小。 ps或top报告的进程大小 包括,以及该过程使用的任何其他内存。下列 是不属于垃圾收集堆的事物的示例 但它是该过程所需内存的一部分:

  • 实施JVM的代码
  • 实现JVM的数据结构的C手动堆
  • 系统中所有线程的堆栈(app + JVM)
  • 缓存的Java字节码(用于库和应用程序)
  • JITed机器代码(用于库和应用程序)
  • 所有已加载类的静态变量