Object obj=new Object()
這類的引用,只要強引用還存在,垃圾收集器永遠不會回收掉被引用的對象。SoftReference
類來實現。WeakReference
類來實現。PhantomReference
類來實現。此方法將可用內存按容量劃分爲大小相等的兩塊,每次只使用其中的一塊。當這一塊的內存用完了,就將還存活着的對象複製到另一塊上面,而後再把已使用過的內存空間一次清理掉。這樣使得每次都是對整個半區進行內存回收,內存分配時也就不用考慮內存碎片等複雜狀況,只要移動堆頂指針,按順序分配內存便可,實現簡單,運行高效。可是可用內存變成原來的一半,代價較大。算法
此方法通常用在回收新生代,由於新生代的對象98%都是很快就會被回收,因此不用1:1劃分,而是分爲一塊較大的Eden空間
和2塊較小的Survivor空間
。每次使用Eden和其中一塊Survivor。當回收時,將Eden和Survivor中還存活着的對象一次性地複製到另一塊Survivor空間上,最後清理掉Eden和剛纔用過的Survivor空間。HotSpot虛擬機默認Eden和Survivor的大小比例是8:1:1,即新生代中可用內存爲90%,只有10%被浪費。 指針