Java中内存主机和内存参数xms和xmx之间的关系
我有以下带有内存详细信息的主机:Java中内存主机和内存参数xms和xmx之间的关系,java,linux,memory,memory-management,Java,Linux,Memory,Memory Management,我有以下带有内存详细信息的主机: $free -m total used free shared buffers cached Mem: 7872 7579 292 17 483 3983 -/+ buffers/cache: 3112 4759 Swap: 2047 14
$free -m
total used free shared buffers cached
Mem: 7872 7579 292 17 483 3983
-/+ buffers/cache: 3112 4759
Swap: 2047 14 2033
我有一个java应用程序运行参数-Xms200m-Xmx200m
,有人能解释一下为什么VCZ是3800076,RSS是241304(这是更多的java参数)
从ps-aux
命令:
66345 6773 0.2 2.9 3800076 241304 ? Sl Apr1 12:06 /apps/myapps/myapp1/java/bin/java -Xms200m -Xmx200m
Java进程(如操作系统所见)使用的内存不仅限于Java堆。还有更多的内存区域需要计算:
- 元空间(类元数据所在的位置)李>
- 代码缓存(存储JIT编译的方法和所有生成的代码)李>
- 直接副缓冲器李>
- 内存映射文件,包括JVM映射的文件,如类路径上的所有JAR文件李>
- 线程堆栈李>
- JVM代码本身和Java运行时加载的所有动态库李>
- 其他内部JVM结构
java -XX:NativeMemoryTracking=detail -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics
这是哪个版本的Java?在主机中使用Java 8,请添加参考。然后我将投票:-p这使得很难计划VM来部署JVM应用程序。用于将mx、mss、permgen设置为低于物理内存大小的特定值,这样您就安全了。现在我有一些JVM的mx为12g,但是他们的VSS是那个尺寸的两倍,并且超过了盒子上可用的总内存——我认为这是一场即将发生的灾难。