首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JVM内存:为什么任务管理器上的内存与JProbe (或JConsole工具)不同

JVM内存:为什么任务管理器上的内存与JProbe (或JConsole工具)不同
EN

Stack Overflow用户
提问于 2012-08-18 09:24:29
回答 1查看 6.9K关注 0票数 9

我面临的问题是我的应用程序使用的内存只有100 my,之后减少了50 my,但是在Window Task Manager上,它显示了150 my,并且始终保持或增加而不是减少,我们如何减少任务管理器上的内存(私有工作集)?

EN

回答 1

Stack Overflow用户

发布于 2012-08-18 09:30:22

您在JConsole (或其他监视工具)中看到的是使用java内存的模式。

JVM的内存通常被划分在这些区域中(在监视工具中也可以看到)。

  1. 堆内存,用于Java对象
  2. 非堆内存,它是java存储加载的类和元数据以及JVM代码的地方。
  3. 本机内存是为dll和Java的本机代码保留的内存的一部分(非常低的级别)。有时,当您有足够的堆内存时,您可以在这个区域获得一个OOM (因为随着Max Heap大小的增加,它减少了可用的本机内存)。

windows任务管理器没有显示这一点。它显示了应用程序使用的整个内存(堆+非堆+本机部分)。

还要注意的是,通常需要从操作系统中获得更多内存的进程,即使在实际应用程序“释放”内存时,这个内存也由它们保存。这些内存页已被映射为进程地址空间的一部分。因此,在任务管理器中,您不会看到内存减少的模式,但这并不表示您的应用程序存在内存泄漏。

因此,您不能减少从任务管理器中看到的内存,但是从监视工具中看到的内存在某个时候会减少,否则可能会导致内存泄漏。

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

https://stackoverflow.com/questions/12017437

复制
相关文章

相似问题

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