<强> 强>
Java, o,。GC, o, o。,: 1) 2) GC。
<强> 强>
, GC
对象c=新车();
c=零;
,,,, java,堆栈,GC。
。缓存,缓存,cacheGC (cachereferencelife周期)。cachereference GCobject,。对象,对象。GC(对象)。
<>强weakreference引用强> <强> 强>
, javaweak参考。强引用:对象c=新车();//ccar、汽车
弱引用,强引用,GC,。
<强> weakreference引用强> <强> 强>
weakreference引用<汽车> weakCar=newWeakReference(汽车)(汽车);
referenceobject疲软,:
weakCar.get ();
, weakCar。
<强>:强>
包weakreference;
/* * * @authorwison
*/
公共类车{
privatedouble价格;
privateString色彩;
publicCar(双重价格,字符串的颜色){
。价格=价格;
。颜色=颜色;
}
publicdouble getPrice () {
returnprice;
}
publicvoid setPrice(双价格){
。价格=价格;
}
publicString getColour () {
returncolour;
}
publicvoid setColour (String颜色){
。颜色=颜色;
}
publicString toString () {
returncolour +“汽车美元”+价格;
}
}
包weakreference;
进口java.lang.ref.WeakReference;
/* *
* @authorwison
*/
公共类TestWeakReference {
publicstatic void main (String [] args) {
Carcar=新汽车(22000年,“银”);
weakreference引用<汽车> weakCar=new weakreference引用<汽车>(汽车);
印锑=0;
,(真正的){
如果(weakCar.get () !=null) {
我+ +,
system . out。println(“对象是活的”+我+“循环——“+ weakCar);其他
} {
system . out。println(“收集对象。”);
打破;
}
}
}
}
,,收集“对象”。weakreference引用。
,汽车,汽车强引用,弱引用weakCar。javawhile,汽车,(?)。
<强> 强>
TestWeakReference。java:
包weakreference;
进口java.lang.ref.WeakReference;
/* * * @authorwison
*/
公共类TestWeakReference {
publicstatic void main (String [] args) {
Carcar=新汽车(22000年,“银”);
weakreference引用<汽车> weakCar=new weakreference引用<汽车>(汽车);
印锑=0;
,(真正的){
system . out。println(“这是强引用‘汽车’”+);
如果(weakCar.get () !=null) {
我+ +,
system . out。println(“对象是活的”+我+“循环——“+ weakCar);其他
} {
system . out。println(“收集对象。”);
打破;
}
}
}
}
referenceobject疲软。strongreference车。WeakReference引用,GC。弱引用,.
<强> ReferenceQueue 强> <强> 强>
弱引用,弱引用。javaReferenceQueuereference。WeakReferenceReferenceQueue。引用
<强> SoftReference 强> <强> 强>
软referenceweakreference, GC:软referenceobject。、软referenceweak referencecache objectsreference。保留缓存对象。
<强> 强>
1) 2) GC。软referenceweakreference