【发布时间】:2012-08-14 14:08:57
【问题描述】:
我遇到的问题是我的应用程序使用的内存只有 100MB,之后它减少了 50MB,但是在窗口任务管理器上它显示 150MB 并且总是保持或增加而不是减少, 我们如何减少任务管理器上的内存(私有工作集)?
【问题讨论】:
标签: java memory jvm profiling monitoring
我遇到的问题是我的应用程序使用的内存只有 100MB,之后它减少了 50MB,但是在窗口任务管理器上它显示 150MB 并且总是保持或增加而不是减少, 我们如何减少任务管理器上的内存(私有工作集)?
【问题讨论】:
标签: java memory jvm profiling monitoring
您在JConsole(或其他监控工具)中看到的是Java 内存正在使用的模式。
JVM 的内存通常在这些区域之间划分(您也可以在监控工具中看到)。
Max Heap 的大小,它会减少本机内存
可用)。Windows 任务管理器没有显示。它显示了您的应用程序使用的整个内存(堆+非堆+本机部分)。
另请注意,通常进程会从操作系统请求更多内存,即使实际应用程序“释放”内存,这些内存也会由它们保留。这些内存页已被映射为进程地址空间的一部分。因此,在您的任务管理器中,您不会看到内存减少的模式,但这并不表示您的应用程序存在内存泄漏。
所以你不能减少你从任务管理器看到的内存,但是你从监控工具看到的内存应该会在某个时候减少,否则可能表明内存泄漏
【讨论】:
Heap 和Non-heap 的内存消耗与JConsole。是否有任何工具可以监控 Java 应用程序的native 内存使用情况?