JVM体系结构
JVM體系結(jié)構(gòu)
Java虛擬機(jī)主要分為五大模塊:
- 類裝載器子系統(tǒng)
- 運(yùn)行時(shí)數(shù)據(jù)區(qū)
- 執(zhí)行引擎
- 本地方法接口
- 垃圾收集模塊
- 1、JVM一共分為五個(gè)區(qū),分別為方法區(qū)、堆、Java棧、本地方法棧、程序計(jì)? 2、方法區(qū)、堆為線程共享區(qū)域,GC會(huì)對(duì)二個(gè)區(qū)進(jìn)行垃圾回收;
-
? 3、Java棧、本地方法棧、程序計(jì)數(shù)器為線程私有區(qū)域;
? 4、程序計(jì)數(shù)器:程序計(jì)數(shù)器是一塊較小的內(nèi)存空間,是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器?程序計(jì)算器處于線程獨(dú)占區(qū)?如果線程執(zhí)行的是java方法,記錄的是正在執(zhí)行的虛擬機(jī)字節(jié) 碼指令的地址,如果是native方法,這個(gè)計(jì)數(shù)器值為undefined;
? 5、Java棧:棧也叫棧內(nèi)存,主管Java程序的運(yùn)行,是在線程創(chuàng)建時(shí) 創(chuàng)建,它的生命期是跟隨線程的生命期,線程結(jié)束棧內(nèi)存也就釋放,對(duì)于棧來(lái)說(shuō)不存在垃圾回收問題,只要線程一結(jié)束該棧就Over,生命周期和線程一致,是線程私有的。8種基本類型的變量+對(duì)象的引用變量+實(shí)例方法都是在函數(shù)的棧內(nèi)存中分配,棧里有棧幀,有返回對(duì)象、本地變量表、操作數(shù)棧、動(dòng)態(tài)連接。
? 6、本地方法棧:它的具體做法是NativeMethod Stack中登記native方法,在ExecutionEngine執(zhí)行時(shí)加載本地方法庫(kù);
? 7、方法區(qū):方法區(qū)是被所有線程共享,所有字段和方法字節(jié)碼,以及一些特殊方法如構(gòu)造函數(shù),接口代碼也在此定義。簡(jiǎn)單說(shuō),所有定 義的方法的信息都保存在該區(qū)域,此區(qū)屬于共享區(qū)間
方法區(qū)是一種特殊的堆,棧里面不會(huì)有垃圾,用完就彈出了,否則阻塞了main方法嗎,垃圾幾乎都在堆里,所以JVM性能調(diào)優(yōu)%99都針對(duì)于堆
總結(jié)
- 上一篇: web前端性能优化--如何提高页面加载速
- 下一篇: java完全自学手册下载,已拿offer