1. 銷毀對象在java中怎麼用
//a,b引用對象
Object a = new Object();
Object b = a;
//撤銷a引用
a=null;
//撤銷b引用
b=null;
//沒有了所有引用了~那麼new 開辟的內存空間會被gc內存回內收器在稍後隨機時段回收掉容。
2. Java GC詳解 - 1. 最全面的理解Java對象結構 - 對象指針 OOPs
Java 對象結構中的對象指針 OOPs詳解如下:
1. OOPs 的組成 OOPs 是對象頭的主要組成部分,包括標記字和類型字。 標記字:大小為 8 位元組,包含對象的狀態信息,如哈希值、對象形狀、鎖信息和數組長度等。 類型字:指向對象所屬類的指針,Java 7 之前位於持久帶,Java 8 及以後位於元數據區。
2. 標記字的具體結構 哈希值:如果類未覆蓋 hashcode 方法,Java 會使用默認的哈希值計算。哈希值存儲在標記字中,用於快速查找對象。 分代年齡:用於分代垃圾回收的跟蹤,最大值為 15。分代年齡表示對象在新生代中經歷 GC 的次數。 鎖狀態:包括偏向鎖、輕量鎖和重量鎖等狀態信息,用於實現 Java 的同步機制。
3. 哈希值計算與存儲 Java 使用默認的哈希值計算方式,並將哈希值存儲在對象的標記字中。 哈希值的計算方式對於理解對象的內存布局和 GC 行為至關重要。
4. 分代年齡與 GC 分代年齡用於跟蹤對象在新生代中的存活時間,是 GC 決策的重要依據。 當對象的分代年齡達到最大值時,對象可能會被晉升到老年代。
5. 鎖狀態與偏向鎖 OOPs 中的鎖狀態信息包括偏向鎖、輕量鎖和重量鎖等,用於實現 Java 的線程同步。 偏向鎖是一種優化手段,當只有一個線程訪問對象時,可以消除同步開銷。
6. 壓縮指針與類型字大小 在 32 位環境中,Java 默認使用壓縮指針以減少內存使用。 壓縮指針的原理在於對象起始和結束位置總是 8 位元組對齊,因此無需描述對象中間的位元組。 通過改變 JVM 的配置,可以啟用或禁用壓縮指針。
綜上所述,OOPs 是 Java 對象結構中的關鍵組成部分,包含對象的狀態信息、類型信息和鎖狀態等。深入理解 OOPs 的結構和行為對於優化 Java 應用的性能和穩定性至關重要。