首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘'top’显示Java程序使用的内存比Java分析器显示的要多

‘'top’显示Java程序使用的内存比Java分析器显示的要多
EN

Stack Overflow用户
提问于 2017-08-16 02:46:04
回答 2查看 820关注 0票数 2

当Linux命令显示Java进程使用14 2GBs内存而Java分析显示仅使用2GB时,可能是什么原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-16 02:55:09

这意味着您的JVM / Java应用程序正在使用堆外内存。好多了。

  • 可能是内存映射文件。
  • 可能是本地图书馆:不太可能.为了那麽多的记忆。
  • 它可以由本机库分配内存(例如使用malloc)。
  • 它可能是大量的Java线程,也可能是具有巨大线程堆栈的线程。
  • 可能是别的..。

它可能是某种类型的内存泄漏,但不是堆对象的内存泄漏。

(认为这是-Xms造成的理论可能是错误的。如果JVM预先分配了一个巨大的初始堆,并且没有使用它,那么您就不会期望有那么多"RES“内存。可以想象堆已经变得非常大,并且已经缩小了,但是JVM还没有(还)把空间还给操作系统。但是,当JVM缩小堆大小时,JVM会将内存释放回操作系统。)

如果要深入了解这一点,则需要了解应用程序及其库依赖项所做的工作。

票数 5
EN

Stack Overflow用户

发布于 2019-06-18 02:17:44

您的总内存是结果堆、PermSize和堆栈大小。

代码语言:javascript
复制
Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]

此外,JVM还需要一些空间才能顺利运行。解释在这里的迪蒂尔

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45704340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档