我面临的问题是我的应用程序使用的内存只有100MB,之后减少了50MB,但在窗口任务管理器上它显示150MB并且总是保持或增加但不减少,
我们如何减少任务管理器上的内存(私人工作集)?
你所看到的JConsole
(或其他监控工具)是java内存正在使用的模式。
JVM 的内存通常划分在这些区域中(您也可以在监控工具中看到)。
- 堆内存,用于Java对象
- 非堆内存是java存储加载的类的地方
以及元数据和 JVM 代码
- 本机内存是为 dll 保留的内存的一部分
Java 的本机代码(非常低级)。有时你可能会遇到 OOM
在这个区域,当你有足够的堆内存时(因为当你
增加
Max Heap
大小,它减少了本机内存
可用的)。
Windows 任务管理器没有显示这一点。它显示了whole应用程序使用的内存(堆+非堆+本机部分)。
另请注意,通常进程会向操作系统请求更多内存,即使实际应用程序“释放”内存,这些内存也会被它们保留。这些内存页已被映射为进程地址空间的一部分。因此,在任务管理器中,您不会看到内存减少的模式,但这并不表示应用程序存在内存泄漏。
因此,您无法减少从任务管理器看到的内存,但从监视工具看到的内存应该在某个时刻减少,否则可能表明存在内存泄漏
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)