jvm基礎概念

一、jvm主要包括一下幾方面:

1.類加載子系統:負責從文件系統或者網絡中加載Class信息,加載的信息放在方法區中

2.執行引擎:負責執行虛擬機的字節碼文件,一般先進行編譯成機器碼後執行

3.垃圾回收器:java有一套垃圾回收清理機制,開發人員無需手動清理。

垃圾回收機制算法:引用計數法,標記清除法,複製算法,標記壓縮法。

4.堆:在java虛擬機啓動時候創建java堆,他是java程序最主要的內存工作區域,幾乎所有的對象實例都存放在java堆中,

堆空間是所有線程共享的。根據垃圾回收機制的不同,堆可能擁有不同的結構,最爲常見的就是將整個java堆分爲新生代和老年代,其中新生代存放新生的對象或者年齡不大的對象,老年代存放老年對象。新生代非爲eden區,s0區、s1區,s0和s1也被成爲from和to區域,他們是大小相同的並且可以互換角色的空間。絕大多數情況下對象首先分配在eden區,再一次新生代回收後,如果對象還存活則會進入s0或者s1區,之後沒經過一次新生代回收,如果對象還存活,則年齡就+1,當對象達到一定年齡就會進入老年區。

5.棧:每個虛擬機線程都有一個私自的棧,一個線程的java棧在線程創建的時候被創建,java棧中保存着局部變量、方法參數、同事java的方法電泳、返回值等

6方法區:就是存放類信息、常量信息、常量池信息、包括字符串字面量和數字常量等

7.本地方法區:和java棧類似,最大的不同爲本地方法棧用於本地方法的調用,java虛擬機允許java直接調用本地方法。

8.直接內存,java的NIO哭允許java程序實用直接內存,從而提高性能,通常直接內存速度會有限java堆,讀寫頻繁的場合核能會考路使用

9.pc即存器:寄存器是每個線程私有空間,java虛擬機會爲每個線程創建pc寄存器,在任意時刻,一個java線程總是在執行一個方法,這個方法被稱爲當前方法,如果當前方法不是本地方法,pc寄存器會執行當前正在被執行的命令,如果是本地方法,則pc寄存器值爲undefined,寄存器存放房前執行的環境指針、程序計數器、操作棧指針、計算的變量指針等信息


二、堆、棧、方法區之間的聯繫:棧解決的是程序運行的問題,及程序如何執行,或者如何處理數據,堆解決的是數據存儲的問題,技術局怎麼放,放在那裏。方法區則是輔助堆棧的快永久區,解決堆棧信息的產生,是先決條件、



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章