内存主机与Java中的内存参数xms和xmx之间的关系

我有以下主机,其中包含内存详细信息:

$free -m

total used free shared buffers cached

Mem: 7872 7579 292 17 483 3983

-/+ buffers/cache: 3112 4759

Swap: 2047 14 2033

我有一个运行有params的java应用程序 -Xms200m

-Xmx200m,有人可以向我解释为什么VCZ是3800076而RSS是241304(更多的Java params)

ps -aux命令:

66345     6773  0.2  2.9 3800076 241304 ?      Sl   Apr1  12:06 /apps/myapps/myapp1/java/bin/java -Xms200m -Xmx200m

回答:

Java进程使用的内存(如OS所示)不仅限于Java Heap。还有更多的内存区域也应计算在内:

  • 元空间(类元数据所在的位置);
  • 代码缓存(用于JIT编译的方法和所有生成的代码的存储);
  • 直接字节缓冲区;
  • 内存映射文件,包括由JVM映射的文件,例如,类路径上的所有JAR文件;
  • 线程堆栈;
  • JVM代码本身以及Java Runtime加载的所有动态库;
  • 其他内部JVM结构。

使用NativeMemoryTracking

JDK功能来获取JVM使用的内存区域的详细分类:

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

以上是 内存主机与Java中的内存参数xms和xmx之间的关系 的全部内容, 来源链接: utcz.com/qa/418082.html

回到顶部