Java 中的記憶體管理
Java 記憶體模型分為執行緒棧(每個執行緒一個)和一個堆區域。
執行緒棧
這是執行緒特定的記憶體區域,包含區域性變數、方法呼叫資訊等。JVM 棧可以是固定大小的,也可以是可變大小的。如果執行緒中的計算超過其棧大小限制,則 JVM 會丟擲 StackOverflowError 並退出。
堆
它包含在應用程式生命週期中建立的所有物件。堆是在虛擬機器啟動時建立的。垃圾收集器回收物件堆儲存,且物件從不顯式地釋放。JVM 不使用任何自動儲存管理系統,它可能會根據系統要求而有所不同。堆可以是固定大小的,也可以根據要求而變化。堆的記憶體不必是連續的。
靜態變數儲存在堆區域,而儲存在堆上的物件可以由儲存線上程棧中的引用引用。
區域性變數儲存在堆疊區域。
Advertisement