首先先看一下jvm的大致情況,包括:堆內(nèi)存使用情況,加載的類的情況,線程個數(shù)等等信息。如下圖所示:
接著看一下通過jconsole看到的jvm的內(nèi)存使用情況。jvm主要管理兩種類型的內(nèi)存:堆和非堆。簡單來說堆就是Java代碼可及的內(nèi)存,是留給開發(fā)人員使用的;非堆就是JVM留給自己用的,所有方法區(qū)、JVM內(nèi)部處理或優(yōu)化所需的內(nèi)存(如JIT編譯后的代碼緩存)、每個類結(jié)構(gòu)(如運(yùn)行時常數(shù)池、字段和方法數(shù)據(jù))以及方法和構(gòu)造方法的代碼都在非堆內(nèi)存中。在jconsole中,我們看到下方綠色的柱狀圖表示的各個部分的內(nèi)存情況。在jconsole中jvm的堆內(nèi)存分為:eden space 內(nèi)存池,survivor space 內(nèi)存池,tenured gen內(nèi)存池,非堆內(nèi)存分為:code cache內(nèi)存池,perm gen內(nèi)存池。如下圖所示:
最后看使用jconsole查看一下jvm的參數(shù)設(shè)置,如下圖:
上面的jvm的參數(shù)說明如下:
-Xms 最小堆空間
-Xmx 最大堆空間
-Xmn 新生代空間
-Xss 線程棧空間
-XX:PermSize=xxx 永久代空間
-XX:MaxPermSize=xxx 最大永久代空間