Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中内存主机和内存参数xms和xmx之间的关系_Java_Linux_Memory_Memory Management - Fatal编程技术网

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结构
使用JDK功能获取JVM使用的内存区域的详细细分:

java -XX:NativeMemoryTracking=detail -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

这是哪个版本的Java?在主机中使用Java 8,请添加参考。然后我将投票:-p这使得很难计划VM来部署JVM应用程序。用于将mx、mss、permgen设置为低于物理内存大小的特定值,这样您就安全了。现在我有一些JVM的mx为12g,但是他们的VSS是那个尺寸的两倍,并且超过了盒子上可用的总内存——我认为这是一场即将发生的灾难。