2

我把jvm的xm设置为4G,但是运行一段时间后,用top查看内存,显示进程使用了​​12G内存。

那么 xxx 到底是什么意思呢?如果我想将 jvm 内存限制为 4 G 该怎么办?

命令行:-server -Xms4g -Xmx4g

还有另一个相关的问题:)

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

谢谢

4

1 回答 1

7

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

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