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

Java进程使用的总内存和堆大小,java,memory,jvm,size,heap,Java,Memory,Jvm,Size,Heap,我使用SpringBatch编写了一个应用程序。我可以通过VisualVM看到堆大小约为22MB。但是,当我使用Process Explorer(在Windows上)查看它使用了多少内存时,差别很大(私有字节-71560K和工作集-80388K)。如何解释? 还有什么东西可以使用这个内存 谢谢不要忘记本机空间(堆栈)!堆只表示对象,线程/原语占用额外的内存。同样,一旦进程占用内存,即使内容可能被垃圾收集,它有时也不会被释放回操作系统。另外,我不确定VisualVM,但EclipseMat只显示“

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


谢谢

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

有共享库、线程堆栈、perm gen、直接内存、内存映射文件

但是,JVM在启动时分配最大堆大小。使用量并不重要