java 引用(键为弱引用)WeakHashMap垃圾回收练习

package others.three;

import java.lang.ref.WeakReference;

/**

  • 接口的其他容器
  • 一:WeakHashMap
  • 引用分类:
  •   1.强引用:StrongReference;引用指向对象, gc(Garbage collection)运行时不回收
    
  •   2.软引用:SoftReference gc运行时可能回收(jvm内存不够)
    
  •  3.弱引用:WeakReference gc 运行时立即回收
    
  •   4.虚引用.PhantomReference 类似于无引用,主要跟踪对象被回收的状态,不能单独使用
    
  •  		必须与引用队列(ReferenceQueue)联合使用
    
  • 目的: 避免对象长期驻留在内存中,解决垃圾回收时机问题
  • WeakHashMap
  •  键为弱引用,回收键后自动删除key-value对象
    
  • 二:其他Map实现类
  •   1.IdenttyHashMap:
    
  •  	键只以地址去重,而不是比较hashcode与equals
    
  •  	注意:键是常量池中的字符串
    
  •    2.EnumMap
    
  •  	键必须为枚举的值
    
  •  	构造器:public EnumMap(指定枚举class对象)
    

*/

public class RefDemo {

public static void main(String[] args) {
	//字符串常量池不是 共享的
	String str = new String( "bjsxt is very good");
	//弱引用 管理对象
	WeakReference<String> wr = new WeakReference<String>(str);
    System.out.println("gc运行前"+wr.get());
    //断开引用
    str = null;
    //通知回收
    System.gc();
    System.runFinalization();
    //对象被回收
    System.out.println("gc弱引用运行后"+wr.get());//结果;运行前后不能回收
    System.out.println("***************************");
    testStrong();
}
public static void testStrong(){
	//字符串常量池 共享(不能回收)  强引用
	String str = "bjsxt is very good";
	//弱引用 管理对象 ; 用了new
	WeakReference<String> wr = new WeakReference<String>(str);
    System.out.println("gc运行前"+wr.get());
    //断开引用
    str = null;
    //通知回收
    System.gc();
    System.runFinalization();
    System.out.println("gc强引用运行后"+wr.get());//结果;运行前后不能回收
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值