cod*_*ewb 10 java android garbage-collection weak-references arraylist
我知道WeakReference,如果我做了WeakReference一些东西,除非直接引用它,它将是下一个GC循环收集的垃圾.我的问题是,如果我做出ArrayList的WeakReferenceS'
例如:
ArrayList<WeakReference<String>> exArrayList;
exArrayList = new ArrayList<WeakReference<String>>();
exArrayList.add(new WeakReference<String>("Hello"));
Run Code Online (Sandbox Code Playgroud)
我现在可以访问数据了exArrayList.get(0).get().
我的问题变成了:这是WeakReference数据,exArrayList.get(0)下一个GC循环中的数据是否会被GC进行?(即使我没有另外直接引用它)或者这个特定的参考是否会一直存在直到arraylist被清空?(例如:) exArrayList.clear();.
如果这是重复,我没有在谷歌中找到我的关键字.
Evg*_*eev 24
exArrayList.add(new WeakReference<String>("Hello"));是一个不好的例子,因为String文字永远不会被GC编辑
如果它是例如exArrayList.add(new WeakReference<Object>(new Object()));然后在GC之后该对象将被GC编辑,但exArrayList.get(0)仍然会返回WeakReference,但是exArrayList.get(0).get()会返回null
数据exArrayList.get(0)是WeakReference.它本身不是一个弱引用,因此不会被收集......
但是引用的对象exArrayList.get(0)被弱引用,因此它可能在任何时候被GCed(当然,这要求对该对象没有强引用).
所以
data.get(0)不会成为null,但data.get(0).get()可能成为.
换句话说,列表不引用弱引用对象而是引用弱引用本身.
| 归档时间: |
|
| 查看次数: |
11422 次 |
| 最近记录: |