当前位置: 首页 > 知识库问答 >
问题:

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

杨安歌
2023-03-14
$free -m
             total       used       free     shared    buffers     cached
Mem:          7872       7579        292         17        483       3983
-/+ buffers/cache:       3112       4759 
Swap:         2047         14       2033

我有一个用params-xms200m-xmx200m运行的java应用程序,有人能解释一下为什么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

共有1个答案

邬弘化
2023-03-14

Java进程使用的内存(正如OS所看到的)不仅仅局限于Java堆。还有更多的内存区域需要计算:

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

使用NativeMemoryTracking JDK特性获取JVM使用的内存区域的详细细分:

java -XX:NativeMemoryTracking=detail -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics
 类似资料:
  • 问题内容: 我有以下主机,其中包含内存详细信息: 我有一个运行有params的java应用程序 ,有人可以向我解释为什么VCZ是3800076而RSS是241304(更多的Java params) 从命令: 问题答案: Java进程使用的内存(如OS所示)不仅限于Java Heap。还有更多的内存区域也应计算在内: 元空间(类元数据所在的位置); 代码缓存(用于JIT编译的方法和所有生成的代码的存

  • 我编写的java应用程序遇到了一个问题,导致硬件性能问题。问题(我很确定)是,我运行应用程序的一些机器只有1GB的内存。当我启动java应用程序时,我将堆大小设置为-xms512m-xmx1024m。 我的第一个问题是,我的假设是否正确,因为我将机器的所有内存分配给java堆,这显然会导致性能问题?

  • 我有以下代码: 您可以看到每个操作分配5M。当我设置时,它无一例外地成功运行,而当时,它会引发异常。有人能解释一下为什么吗?我在Windows 7、64bit、Eclipse 4.3下。以下代码是相同的结果:

  • 我有一个非常简单的Web服务器类(基于JavaSE的类)。 当我使用此命令启动编译后的类以限制内存使用时:

  • 问题内容: 我在centos Box中运行了一个Java程序。我的-Xmx和-Xms设置为4000 Mb。 该程序工作正常。 但是当我执行free -m时,已用内存显示为506 MB。据我了解,XMS内存应为JVM保留。 我也做了jstat -gccapacity $(pidof java),并且更新了NGCMN和NGCMX并具有相同的值?任何支持都会有所帮助。我正在以 java -Xms4100

  • 本文向大家介绍java内存泄漏与内存溢出关系解析,包括了java内存泄漏与内存溢出关系解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了java内存泄漏与内存溢出关系解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memor