Java进程使用的总内存和堆大小

13

我使用Spring Batch编写了一款应用程序。通过VisualVM,我可以看到堆大小约为22 MB。但是,当我使用Process Explorer(在Windows上)查看它使用了多少内存时,差异很大(私有字节-71560K和工作集-80388K)。如何解释这个问题?

还有哪些其他东西使用了这些内存?

谢谢。

2个回答

5

有共享库、线程栈、永久代、直接内存和内存映射文件。

然而,JVM在启动时分配最大堆大小。使用的量并不那么重要。


2

不要忘记本地空间(栈)!堆仅表示对象,线程/原语占用额外的内存。此外,据我所知,一旦进程占用了内存,即使内容可能被垃圾回收,有时也不会释放回操作系统。另外,我不确定VisualVM,但eclipse MAT只显示“当前”的堆(如果在那个时间点运行GC,则不会被垃圾回收)。您还可以查看jstat。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接