当前位置: 代码迷 >> Android >> android中WeakReference、SoftReference使用方法?该如何处理
  详细解决方案

android中WeakReference、SoftReference使用方法?该如何处理

热度:6   发布时间:2016-04-28 00:29:59.0
android中WeakReference、SoftReference使用方法?
android中WeakReference、SoftReference使用用法?
------解决思路----------------------
你理解的基本没错,但是忽略了java有个常量池的概念
将你代码里面的
Object s1 = "abcdef";
Object s2 = "123456";

改成
Object s1 = new String("abcdef");
Object s2 = new String("123456");

之后你在测试,就会发现 weakref.get()==null 了

之前的测试不成功的原因在于,s1和s2指向的并不是java heap上面的对象,而是常量池中的对象,常量池中的对象是不会被gc释放的,所以weakref.get()不会为null。
修改之后的代码中,s1和s2都是指向分配在java heap上的对象,所以你调用system.gc后,weakref就会被释放了,至于softref则要看什么时候完全没内存了才会释放
  相关解决方案