use*_*295 13 java jvm memory-management jconsole heap-memory
我正在使用Jconsole来监视Java应用程序.内存选项卡显示不同的堆和非堆内存
这些术语有什么区别.另外,请提供一些信息 - 如何通过监视这些参数来查找应用程序行为中的异常.
Hot*_*cks 11
所有基于C的语言(以及大多数其他语言)基本上有三类存储:
你熟悉了.
堆栈你也熟悉,但你只是不知道.如果您有一个带有"本地"变量的方法,那么这些变量将在"调用框架"中分配.调用方法时会分配"调用框架",当从方法返回时会删除"调用框架",因此使用随着调用而增长的"堆栈"和使用返回收缩的"堆栈"最有效地实现它.
静态是您没有明确分配的东西,并且从程序执行开始时基本上存在.
堆栈所需的空间通常相当小,并且在上面的类别中与"非堆内存"混为一谈.
非堆内存是JVM为堆以外的目的分配的所有内存.这包括:
在您的列表中,"CMS Old Gen","Par Eden Space","Par Survivor Space"和"CMS Perm Gen"都是指堆的各个部分.