Cách tiếp cận thích hợp để kiểm tra một tham chiếu yếu trong Java là gì?Testing WeakReference
ý tưởng ban đầu của tôi là phải làm như sau:
public class WeakReferenceTest {
public class Target{
private String value;
public Target(String value){
this.value = value;
}
public String toString(){
return value;
}
}
public class UsesWeakReference{
WeakReference<Target> reference;
public UsesWeakReference(Target test){
reference = new WeakReference<Target>(test);
}
public String call(){
Target test = reference.get();
if(test != null){
return test.toString();
}
return "empty";
}
}
@Test
public void testWeakReference(){
Target target = new Target("42");
UsesWeakReference usesWeakReference = new UsesWeakReference(target);
WeakReference<Target> triggerReference = new WeakReference<Target>(target);
assertEquals("42", usesWeakReference.call());
target = null;
while(triggerReference.get() != null){
System.gc();
}
assertEquals("empty", usesWeakReference.call());
}
}
Các phòng tôi có khoảng cách tiếp cận được sử dụng System.gc(), như tôi hiểu rằng nó có thể cư xử khác nhau trên JVM khác nhau.
Tôi đánh giá cao câu trả lời ... xác nhận quan điểm của tôi. –