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


发布于 2017-08-16 02:55:09
这意味着您的JVM / Java应用程序正在使用堆外内存。好多了。
malloc)。它可能是某种类型的内存泄漏,但不是堆对象的内存泄漏。
(认为这是-Xms造成的理论可能是错误的。如果JVM预先分配了一个巨大的初始堆,并且没有使用它,那么您就不会期望有那么多"RES“内存。可以想象堆已经变得非常大,并且已经缩小了,但是JVM还没有(还)把空间还给操作系统。但是,当JVM缩小堆大小时,JVM会将内存释放回操作系统。)
如果要深入了解这一点,则需要了解应用程序及其库依赖项所做的工作。
发布于 2019-06-18 02:17:44
您的总内存是结果堆、PermSize和堆栈大小。
Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]此外,JVM还需要一些空间才能顺利运行。解释在这里的迪蒂尔
https://stackoverflow.com/questions/45704340
复制相似问题