jvm記憶體管理(二)

2021-08-27 19:38:58 字數 334 閱讀 8713

關於物件訪問

object o = new object()

此語句將會在 堆中 開闢空間儲存 new object()的例項資訊,同時還必須包括物件型別,父類,實現的介面,方法等資訊的位址資訊(這些儲存在方法區中)

reference 型別 儲存的是指向物件的引用,具體的實現方式根據jvm的不同,一般有兩種

1. 控制代碼, 即在jvm堆中儲存了,乙個控制代碼池,方法區的reference儲存的是控制代碼表中控制代碼位址,控制代碼中儲存了具體資訊的位址,好處是,如果物件移動了,控制代碼不需要變

2. 直接位址, 即reference儲存的是物件的直接位址,好處是,速度快,hotspot使用了這種方式

JVM 記憶體管理

date 2020 10 29 16 30 00 updated 2020 10 29 17 10 00 參考文件 jvm記憶體劃分 暫存器 程式計數器pc拿到指令位址,放入指令暫存器ir中,cpu執行指令 本地方法區 方法區棧記憶體 stack 堆記憶體 heap,不是資料結構中的堆 int ar...

JVM自動記憶體管理

可 物件的判定方法 引用計數演算法 給物件新增乙個引用計數器,每乙個引用它的地方時,就 1,失效就 1,為0時候就是不能再被用了。缺陷 注意迴圈引用,就是你用我的,我用你的,叫做死鎖吧,引用計數器是1,無法 a.b b b.a a 現在主流的jvm沒有使用這個演算法。可達性分析演算法 通過一系列稱為...

JVM的記憶體管理

我們知道類中的靜態變數在程式執行期間,其記憶體空間對所有該類的物件例項而言是共享的,為了節省系統記憶體開銷 共享資源,應該將一些變數宣告為靜態變數。通過下面的例子,你就會發現有什麼不同。一 1 public class memorytest 9 1011 data weeks 2021 public...