老馬的JVM筆記(一)----內存管理機制

序:

本系列博客爲《深入理解Java虛擬機:JVM高級特性與最佳實踐 第2版》的讀書筆記。博客中儘可能不用書中原話,而用自己的話來敘述和解釋。實爲自用。如有幸幫助到別人,也是一件好事。


1.1 運行時數據區域

1.1.1 程序計數器(program counter register)

   程序計數器用於標記當前線程運行到該程序的行號。佔用空間小。在Java的線程切換中,能讓該線程找到程序執行位置。即每個線程有自己的程序計數器。

   如線程在運行Java方法,程序計數器記錄正在執行的虛擬機字節碼指令的地址;如正在運行Native方法,該計數器值爲空。 

1.1.2 Java虛擬機棧(Java virtual machine stacks)

   虛擬機棧用於存儲Java方法執行時的局部變量表,操作數棧,動態鏈接,方法出口等信息。每個線程有一個虛擬機棧,生命週期相同。線程使用的,用於服務方法的棧。

   局部變量表:存放基本數據類型(boolean, byte, char, short, int...),對象引用,returnAdd類型。

1.1.3 本地方法棧(native method stack)

   與虛擬機棧類似,存放虛擬機使用的Native方法。

1.1.4 Java堆(Java heap)

   Java堆(GC堆 Garbage Collected Heap)用於存放對象實例,數組。邏輯連續,物理空間不連續。在虛擬機啓動時創建,被所有線程共享。Java程序的核心大內存。

1.1.5 方法區(method area)

   方法區用於存儲已被虛擬機加載的類信息,常量,靜態變量,即時編譯器編譯後的代碼等。 

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