簡述jvm的工作機(jī)制 jvm工作原理是什么?
jvm工作原理是什么?JVM中的內(nèi)存分為五個部分:(1)方法區(qū):存儲加載的類字節(jié)碼,通過它我們可以尋址類中方法的條目。另外,方法區(qū)域包括運行時常量區(qū)域和靜態(tài)常量區(qū)域。此區(qū)域由所有線程共享。(2)堆:存
jvm工作原理是什么?
JVM中的內(nèi)存分為五個部分:
(1)方法區(qū):存儲加載的類字節(jié)碼,通過它我們可以尋址類中方法的條目。另外,方法區(qū)域包括運行時常量區(qū)域和靜態(tài)常量區(qū)域。此區(qū)域由所有線程共享。
(2)堆:存儲新對象。垃圾收集器主要監(jiān)控和回收這個區(qū)域。如果在堆中連續(xù)創(chuàng)建對象,但垃圾收集器不回收它們,則可能會導(dǎo)致outofmemoryerror錯誤。此區(qū)域也由線程共享。
(3)虛擬機(jī)堆棧:存儲所有調(diào)用的Java方法的上下文。當(dāng)在主方法中調(diào)用測試方法時,測試方法上下文將被推送到虛擬機(jī)堆棧中。調(diào)用之后,彈出測試方法上下文。如果在main方法中遞歸調(diào)用main方法,虛擬機(jī)堆棧將消耗光資源,導(dǎo)致堆棧溢出錯誤。這個區(qū)域是線程隔離的,也就是說,每個線程都有一個虛擬機(jī)堆棧。
(4)本地方法堆棧:本地方法堆棧與虛擬機(jī)堆棧類似,只是本地方法堆棧存儲所有調(diào)用的本地本機(jī)方法的上下文。這個區(qū)域也是線程隔離的。
(5)程序計數(shù)器:它存儲CPU的下一條指令的地址,也就是說,它記錄程序在哪里執(zhí)行,哪個語句執(zhí)行,哪個指令執(zhí)行。這個區(qū)域也是線程隔離的。