當前位置:才華齋>計算機>java語言>

java中JVM虛擬機器記憶體模型詳細說明

java語言 閱讀(2.8W)

以下是本站小編為大家收集的java中JVM虛擬機器記憶體模型詳細說明內容,歡迎閱讀學習!

java中JVM虛擬機器記憶體模型詳細說明

  JVM的內部結構如下圖:

java中JVM虛擬機器記憶體模型詳細說明 - 天涯草 - 天涯草

一個優秀Java程式設計師,必須瞭解Java記憶體模型、GC工作原理,以及如何優化GC的效能、與GC進行有限的互動,有一些應用程式對效能要求較高,例如嵌入式系統、實時系統等,只有全面提升記憶體的管理效率,才能提高整個應用程式的效能。

本文將從JVM記憶體模型、GC工作原理,以及GC的幾個關鍵問題進行探討,從GC角度提高Java程式的效能。

  1 java記憶體分為:

程式計數器(當前執行緒所執行位元組碼的行號指示器,位元組碼直譯器要通過改變這個計數器的值來選擇下一條位元組碼指令,分支、迴圈、異常處理等。每條執行緒都有一條獨立的程式計數器,屬於執行緒私有的記憶體區)、

java虛擬機器棧(也是線私有的,儲存區域性變數、操作棧,每個方法執行時建立一個棧幀,執行過程就是棧的出棧入棧操作)、

本地方法棧(執行native方法)、

年輕代堆(eden、from survivor、to survivor)、年老代堆(經過幾次垃圾回收,儲存下來的)、

持久代堆(也叫方法區,儲存常量池和型別資料資訊,不會被回收)、

直接記憶體(使用native方法直接分配堆外記憶體,再通過堆內的DirectByteBuffer作為這塊記憶體的引用進行操作)

  2 物件訪問有兩種:通過控制代碼池和直接通過指標,控制代碼池的好處是垃圾回收後,不需要改變物件引用,只要改變控制代碼引用;直接指標的好處是效率較高。

引用《深入java虛擬機器第二章》

解釋了minor gc和major gc,和兩個survivor區之於複製收集演算法的意義

  3 jvm記憶體機制

java記憶體中的四種引用解析,強引用、弱引用、軟引用、虛引用