JAVA的WeakReference相关用法
来源:互联网 发布:阿里云rds价格 编辑:程序博客网 时间:2024/05/22 13:32
刚学java,android下很多用到WeakReference,主要用在异步的情况下,不太明白,特地用段代码测试一下:
import java.lang.ref.PhantomReference;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.lang.ref.Reference;
import java.lang.reflect.Field;
import java.lang.Thread;
class Thread1 extends Thread{
WeakReference<String> m_str2WeakRef;
Thread1(String str){
m_str2WeakRef = new WeakReference<String>(str);
System.out.println("111 str2WeakRef str2 =" + m_str2WeakRef.get());
start();
}
public void run() {
try
{
Thread.sleep(5001);
} catch(Exception e){}
System.out.println("222 str1WeakRef str2 =" + m_str2WeakRef.get());//str2已经被回收
}
}
public class re {
public static void main(String[] args) throws Exception {
String str1 = new String("str1");
String str2 = new String("str2");
String str3 = new String("str3");
String tmp;
WeakReference<String> str1WeakRef = new WeakReference<String>(str1);
WeakReference<String> str3WeakRef = new WeakReference<String>(str3);
//SoftRefenrence<String> sr = new SoftReference<String>(abc);
//Reference<Object> ref = new SoftReference<Object>(abc);
Thread1 th1 = new Thread1(str2);
str1 = null;
str2 = null;
str3 = null;
//Thread.currentThread().sleep(1000);
System.out.println("111 str1WeakRef str1 =" + str1WeakRef.get());
System.out.println("111 str3WeakRef str3 =" + str3WeakRef.get());
System.out.println("start gc");
tmp = str3WeakRef.get();//这句代码造成str3没被回收,
System.gc();
System.out.println("after gc");
//Thread.currentThread().sleep(1000);
System.out.println("222 str1WeakRef str1 =" + str1WeakRef.get());//str1已经被回收
System.out.println("222 str3WeakRef str3 =" + str3WeakRef.get());// str3没被回收
System.out.println("main end");
}
}
上面代码的输出结果:
111 str2WeakRef str2 =str2
111 str1WeakRef str1 =str1
111 str3WeakRef str3 =str3
start gc
after gc
222 str1WeakRef str1 =null
222 str3WeakRef str3 =str3
main end
222 str1WeakRef str2 =null
- JAVA的WeakReference相关用法
- weakreference 用法
- java的softReference与weakReference
- Java的WeakReference和SoftReference
- Android 笔记 JAVA 的 WeakReference
- JAVA WeakReference
- JAVA WeakReference
- JAVA WeakReference
- java WeakReference
- Java WeakReference
- Java的引用WeakReference与SoftReference
- java 引用的SoftReference,WeakReference&WeakHashMap
- Java的引用StrongReference、 SoftReference、 WeakReference 、PhantomReference
- java WeakReference和SoftReference的区别
- Java的引用StrongReference、 SoftReference、 WeakReference 、PhantomReference
- Java WeakReference的理解与使用
- Java WeakReference的理解与使用
- Java WeakReference的理解与使用
- Go语言前端合并到GCC主干了,计划成为GCC4.6发布功能的一部分
- 最近读了《软件调试的艺术》这本书
- 添加UltraEdit到鼠标右键
- 二叉树遍历
- 链表的C语言实现之动态内存分配
- JAVA的WeakReference相关用法
- Proteus与Keil联调方法
- poj2255 二叉树给出先序中序求后序序列
- C语言高效编程技巧
- DSFAFD
- 在InstallShield中执行带空格路径的的exe
- C语言高效编程技巧
- C# 启动外部程序的几种方法:
- 通过 ulimit 改善系统性能