Java 为什么xmx和top之间存在内存使用差异?
我将jvm的xmx设置为4g,但运行一段时间后,当我使用top查看内存时,它显示了使用12g内存的进程 那么xmx实际上是什么意思呢?如果我想将jvm内存限制在4G,我应该怎么做 命令行:-server-Xms4g-Xmx4g 还有一个相关问题:) 如果gc发生,JVM会不可避免地释放年轻一代中不再使用的对象空间吗?或者他们中的一些人被留到下一个gcJava 为什么xmx和top之间存在内存使用差异?,java,memory,jvm,Java,Memory,Jvm,我将jvm的xmx设置为4g,但运行一段时间后,当我使用top查看内存时,它显示了使用12g内存的进程 那么xmx实际上是什么意思呢?如果我想将jvm内存限制在4G,我应该怎么做 命令行:-server-Xms4g-Xmx4g 还有一个相关问题:) 如果gc发生,JVM会不可避免地释放年轻一代中不再使用的对象空间吗?或者他们中的一些人被留到下一个gc 感谢您,JVM的-Xmx选项指定了Java的最大大小 垃圾收集堆。它不限制JVM使用的内存大小。ps或top报告的流程大小将 包括该内存,以及进程
感谢您,JVM的-Xmx选项指定了Java的最大大小 垃圾收集堆。它不限制JVM使用的内存大小。ps或top报告的流程大小将 包括该内存,以及进程使用的任何其他内存。以下 是不属于垃圾收集堆的事物的示例 但它们是过程所需内存的一部分:
- 实现JVM的代码
- 用于实现JVM的数据结构的C手动堆
- 系统中所有线程的堆栈(app+JVM)
- 缓存的Java字节码(用于库和应用程序)
- JIT机器代码(用于库和应用程序)
- 所有加载类的静态变量