java - 为什么 Java 内存转储分析器中的 Heap total 与内存设置和 JVM 使用总量不对应?

标签 java memory jvm

我们使用 Eclipse 内存分析器进行 Java(Tomcat Web 应用程序)转储。结果饼图中的总堆显示为 86 Mb。同时,该 JVM 的堆限制设置为 1.5GB,我们看到 JVM 的总使用量上升到 2.8GB。

为什么偏差这么大?

最佳答案

请调用jmap -heap TOMCAT_PID,您将看到当前的堆使用情况(eden、survivor spaces、old 和 perm)

另请注意,Java 的实际内存使用量是XMX + MaxPerm + XSS * threads 数。我建议您阅读有关 Java 中内存消耗的精彩文章: http://plumbr.eu/blog/why-does-my-java-process-consume-more-memory-than-xmx

关于java - 为什么 Java 内存转储分析器中的 Heap total 与内存设置和 JVM 使用总量不对应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21312828/

相关文章:

java - 缓存 AmazonSQS 对象是否合适

java - Facebook 连接 - 安卓

c++ - 写入共享内存的频率限制?

c - 如何将另一个指针所指向的地址中存储的值赋给一个指向的指针的地址?

java - 解决 JVM 堆大小设置未传播到应用程序的问题

java - Apache Spark 作业因 FileNotFoundExceptoin 而失败

java - 如何使用SWT浏览器检测互联网连接(或处理服务器不可用)

linux - 我可以保护两个进程之间的内存吗

java - 将未导出/未打开的包添加到模块信息的 ModulePackages 的用例是什么?

java - Blockhound Gradle : 'You need to add ' -XX:+AllowRedefinitionToAddDeleteMethods' JVM flag.'