引用的分类

引用的分类

  强引用:StrongReference引用指向对象,gc(Garbage collection)运行时不回收

  软引用:SoftReference,gc运行时可能回收(jvm内存不够)

  弱引用:WeakReference,gc运行时立即回收

  虚引用:PhantomReference类似无引用,主要跟踪对象被回收的状态,不能单独使用,必须与引用队列(ReferenceQueue)联合使用

目的

  避免对象长时间驻留在内存中,解决垃圾回收机制回收时机问题

 1 /**
 2  * 引用分类:强、软、弱、虚
 3  * 强与弱引用
 4  * @author Administrator
 5  *
 6  */
 7 public class RefDemo {
 8 
 9     /**
10      * @param args
11      */
12     public static void main(String[] args) {
13         //字符串常量池 
14         String str =new String("bjsxt is very good");
15         //弱引用 管理 对象
16         WeakReference<String> wr =new WeakReference<String>(str);
17         System.out.println("gc运行前:"+wr.get());
18         //断开引用
19         str =null;
20         //通知回收
21         System.gc();
22         System.runFinalization();
23         //对象被回收
24         System.out.println("gc运行后:"+wr.get()); 
25     }
26     public static void testStrong(){
27         //字符串常量池  共享(不能回收)
28         String str ="bjsxt is very good";
29         //弱引用 管理 对象
30         WeakReference<String> wr =new WeakReference<String>(str);
31         System.out.println("gc运行前:"+wr.get());
32         //断开引用
33         str =null;
34         //通知回收
35         System.gc();
36         System.runFinalization();
37         System.out.println("gc运行后:"+wr.get());
38     }
39 
40 }
41 
42 /**
43  * WeakHashMap 键为弱类型,gc运行立即回收
44  * @author Administrator
45  *
46  */
47 public class WeakHashMapDemo {
48 
49     /**
50      * @param args
51      */
52     public static void main(String[] args) {
53         WeakHashMap<String,String> map =new WeakHashMap<String,String>();
54         //测试数据
55         //常量池对象,不会回收
56         map.put("abc", "a");
57         map.put("d", "test");
58         //gc运行 已被回收
59         map.put(new String("bjsxt"), "c");
60         map.put(new String("dsf"), "d");
61         
62         //通知回收
63         System.gc();
64         System.runFinalization();
65         
66         System.out.println(map.size());
67     }
68 
69 }
View Code

 

转载于:https://www.cnblogs.com/jqbai/articles/9108806.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值