最佳答案
这意味着您的 JVM/Java 应用程序正在使用堆外内存。很多。
- 它可能是内存映射文件。
- 它可能是本地库:不太可能……因为那么多内存。
- 它可能是由本地库分配的内存(例如使用
malloc
)。 - 它可能是大量的 Java 线程,或者具有巨大线程堆栈的线程。
- 也可能是别的……
这可能是某种内存泄漏,但不是堆对象的内存泄漏。
(这是由于 -Xms 引起的理论可能是错误的。如果 JVM 预分配了一个巨大的初始堆并且没有使用它,您就不会期望那么多的“RES”内存。这是可以想象的 堆已经变得非常大并且已经缩小,但是 JVM 还没有(还)将空间还给操作系统。但是据我所知,JVM 将内存释放回操作系统 它缩小了堆的大小。)
如果您要深入了解这一点,您将需要了解您的应用程序及其依赖库在做什么。
关于java - 'top' 显示 Java 程序使用的内存比 Java 分析器显示的多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704340/