內(nèi)存區(qū)域
1稍走,java虛擬機棧:描述的是java方法執(zhí)行的內(nèi)存模型---每個方法在執(zhí)行的同時都會創(chuàng)建一個棧幀用于存儲局部變量表心褐、操作數(shù)棧、動態(tài)鏈接脸候、方法出口等信息,每個方法從調(diào)用直到執(zhí)行完成的過程绑蔫,就對應(yīng)著一個棧幀在虛擬機棧幀入棧道出棧的過程运沦。虛擬機棧為虛擬機執(zhí)行java方法(也就是字節(jié)碼)服務(wù)。
本地方法棧:與虛擬機棧發(fā)揮的作用非常相似配深,不過本地方法棧是為虛擬機使用到的eNative方法服務(wù)茶袒。
java堆:存放內(nèi)存實例。
方法區(qū):用于存儲已被虛擬機加載的類信息凉馆、常量薪寓、靜態(tài)變量亡资、即時編譯器編譯后的代碼等數(shù)據(jù)。
運行時常量池:是方法區(qū)的一部分向叉。用于存放編譯器生成的各種字面量和符號引用
引用
強引用:如“Object obj = new Object()”锥腻,obj則為強引用,只要強引用還存在母谎,則被引用的對象(new Object())永遠不會被垃圾收集器回收瘦黑。
軟引用:如:
則為軟引用。用來描述一些還有用單并非必須的對象奇唤。軟引用關(guān)聯(lián)著的對象幸斥,在系統(tǒng)將要發(fā)生內(nèi)存溢出異常之前,將會把這些對象列進回收范圍之中進行第二次回收咬扇。
弱引用:和軟引用類似甲葬,JDK1.2之后,提供了WeakReference類來實現(xiàn)弱引用懈贺。它的強度比軟引用更弱一些经窖,被弱引用關(guān)聯(lián)的對象只能生存到下一次垃圾收集發(fā)生之前。
虛引用:也稱幽靈引用或者幻影引用梭灿,是最弱的一種引用關(guān)系画侣,在JDK1.2之后,提供了PhantomReference類實現(xiàn)虛引用堡妒。為一個對象設(shè)置虛引用關(guān)聯(lián)唯一的目的配乱,就是能在這個對象被收集器回收時收到一個系統(tǒng)通知。