目前執行緒所執行的字節碼的行號指示器。
執行緒私有,與執行緒具有相同生命週期。用於儲存局部變數表格、操作數堆疊、動態鍊錶、方法出口等資訊。
局部變數表存放內容:
#基本資料型態(boolean、byte、char、short、int、float、long、double)
##物件引用(區別於符號引用,符號引用存放在常數池)
兩種例外:StackOverflowError:執行緒請求的堆疊深度>虛擬機器允許的深度
OutOfMemoryError:動態擴充時無法申請到足夠記憶體
3. 本機方法堆疊(Native Method Stack)
與虛擬機器堆疊類似,差異是Native Method Stack服務Native方法,而虛擬機器棧服務於Java方法。
4. Java堆(Java Heap)
陣列。
垃圾收集器管理的主要區域,也稱為「GC堆(Garbage Collected Heap)」
包含新生代(Eden空間、From Survivor空間、To Survivor空間)、老生代。
物理上可以不連續,邏輯上連續。
當堆中沒有可用記憶體完成實例分配,也無法再擴展時-OutOfMemoryError5. 方法區(別名Non-Heap)#也是所有執行緒共享,用於儲存
已被虛擬機器載入的類別資訊、常數、靜態變數、即時編譯器編譯後的程式碼等資料永久代有-XX:MaxPermSize的上限。
屬於方法區的一部份。
JDK1.4新加入的NIO(New Input/Output)類,引進了一個基於通道(Channel)與緩衝區(Buffer)的I/O方式,它可使用Native
函數。不受Java堆大小(-Xmx)限制,可能造成各個記憶體區域總和大於實體記憶體限製而造成動態擴充時出現OutOfMemoryError。
以上是JVM學習之Java執行時間資料區域的詳細內容。更多資訊請關注PHP中文網其他相關文章!