jvm程序結構

一個java源程序文件,會被編譯為字節(jié)碼文件(.class),每個java程序都需要運行在自己的jvm上,然后告知jvm程序的運行入口,再被jvm通過字節(jié)碼解釋器運行。
jvm初始運行時,會分配好方法區(qū),堆。而jvm每遇到一個線程,就會為其分配一個程序計數(shù)器,虛擬機棧,和本地方法棧。當線程終止時,三者所占用的內(nèi)存空間也會被釋放掉。
這也是為什么內(nèi)存區(qū)域被分成線程共享和非線程共享,非線程共享的那三個區(qū)域的生命周期和所屬線程相同,線程共享的區(qū)域與java程序運行的生命周期相同,所以這也是系統(tǒng)垃圾回收的場所只發(fā)生在線程共享區(qū)的原因。
標簽: