前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中的四大引用(强,软,弱,虚)

java中的四大引用(强,软,弱,虚)

作者头像
用户5927264
发布2019-09-25 15:55:11
3380
发布2019-09-25 15:55:11
举报
文章被收录于专栏:OSChina
代码语言:javascript
复制
package com.shi.ref;

import java.util.HashMap;
import java.util.WeakHashMap;

/**
 * 	弱引用HashMap的使用
 * @author shiye
 *
 *	结果:
	{1=HashMap}
	{1=HashMap}
	{1=HashMap} 1
	********************
	{2=WeakHashMap}
	{2=WeakHashMap}
	{} 0

 */
public class TestWeakHashMap {

	public static void main(String[] args) {
		myHashMap();
		System.out.println("********************");
		weakHashMap();
	}
	
	/**
	 * 强引用HashMap
	 */
	static void myHashMap() {
		HashMap<Integer,String> map = new HashMap<>();
		Integer key = new Integer(1);
		String value = "HashMap";
		map.put(key, value);
		
		System.out.println(map);
		
		key = null;
		System.out.println(map);
		
		System.gc();
		System.out.println(map + " " + map.size());
	}
	
	/**
	 * 弱引用HashMap  
	 */
	static void weakHashMap() {
		WeakHashMap<Integer,String> map = new WeakHashMap<>();
		Integer key = new Integer(2);
		String value = "WeakHashMap";
		map.put(key, value);
		
		System.out.println(map);
		
		key = null;
		System.out.println(map);
		
		System.gc();
		System.out.println(map + " " + map.size());
	}

}
代码语言:javascript
复制
package com.shi.ref;

import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;

/**
 * 	虚引用 结合 引用队列
 * @author shiye
 *	结果
		java.lang.Object@15db9742
		java.lang.Object@15db9742
		null
		************************
		null
		null
		java.lang.ref.WeakReference@6d06d69c
 */
public class TestReferenceQueue {

	public static void main(String[] args) throws InterruptedException {

		Object o1 = new Object();
		ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();
		WeakReference<Object> weakReference = new WeakReference<Object>(o1, referenceQueue);
		
		System.out.println(o1);
		System.out.println(weakReference.get());
		System.out.println(referenceQueue.poll());
		
		System.out.println("************************");
		
		o1 = null;
		System.gc();
		Thread.sleep(500);
		
		System.out.println(o1);//o1 = null;
		System.out.println(weakReference.get());//o1 = null   System.gc();
		System.out.println(referenceQueue.poll());//o1 = null  System.gc();
	}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档