Java虛擬機-JVM特性總結分享
- 作者:新網(wǎng)
- 來源:新網(wǎng)
- 瀏覽:100
- 2018-05-02 17:59:48
大家好!最近看這本書,頗有心得,自己也算深入的了解到了不少知識,從這本書里提取了自己認為比較重要的知識點分享給大家,還有自己的一些圖例總結。
大家好!最近看這本書,頗有心得,自己也算深入的了解到了不少知識,從這本書里提取了自己認為比較重要的知識點分享給大家,還有自己的一些圖例總結。

<
div> 側重于本書的以下幾章內容:第2章-
java內存區(qū)域與內存溢出異常、第3章-垃圾收集器與垃圾回收策略、第6章-類文件結構、第7章-
虛擬機類加載機制、第8章-虛擬機字節(jié)碼執(zhí)行引擎。
這幾個主要章節(jié)是有一定的內在聯(lián)系。虛擬機中內存占用最大的就是堆內存,而對象的實例就存在堆中,所以這部分內存的使用效率最高。java語言是面向對象的,而對象是怎樣來占用堆中這部分內存的呢?下面內容或者下面幾期我會為大家揭開迷霧!
當然,java虛擬機中不僅僅只有堆占用內存還有:java虛擬機棧、程序計數(shù)器、本地方法棧、方法區(qū)這5類瓜分虛擬機內存。如上圖所示,由java虛擬機管理的這五部分數(shù)據(jù)區(qū)域,可分為兩大類:一類是線程共享的,一類是線程私有的。而線程私有的數(shù)據(jù)區(qū),每一部分的內存和線程的生命周期相同,每個線程之間互不影響,獨立存儲。
線程共享的區(qū)域可分為:java堆(占用的內存最大)、方法區(qū)
java堆:在虛擬機啟動時創(chuàng)建,幾乎所有對象的實例都在堆上分配內存。是垃圾收集器管理的主要區(qū)域
方法區(qū):主要存儲運行時常量池、常量、靜態(tài)變量、已被虛擬機加載的類信息、即時編譯器編譯后的代碼等數(shù)據(jù)
線程私有的區(qū)域可分為:程序計數(shù)器、java虛擬機棧、本地方法棧
程序計數(shù)器: 存儲當前線程執(zhí)行的字節(jié)碼的行號指示器
java虛擬機棧: 是描述java方法執(zhí)行的內存模型,每個方法在執(zhí)行時都會申請一段內存存放方法執(zhí)行時的數(shù)據(jù),稱為棧幀;其包含局部變量、操作數(shù)棧、動態(tài)鏈接、方法出口等數(shù)據(jù)。JVM是基于棧的,所以每個方法從開始執(zhí)行到結束,對應這一個棧幀在虛擬機中入棧到出棧的過程。