sto attraversando il seguente post su Riferimenti deboli in java: -WeakReference non si restituisce un valore nullo, se non ci sono forti riferimenti all'oggetto vero e proprio riferimento
Understanding Weak References.
Dopo aver attraversato la parte teorica, cercando di testare il riferimento debole per condizione nullo. Ma, nullo controllo per riferimento debole non ritorna mai vero nel codice seguente: -
package com.weak;
import java.lang.ref.WeakReference;
class Widget{}
public class WeakReferenceDemo {
public static void main(String[] args) throws InterruptedException {
Widget widget = new Widget() ;
WeakReference<Widget> valueWrapper = new WeakReference<Widget>(widget) ;
System.out.println(valueWrapper.get());
//here strong reference to object is lost
widget = null ;
int count = 0 ;
//here checking for null condition
while(valueWrapper.get() != null){
System.out.print(".");
Thread.sleep(432) ;
if(++count % 25 == 0) System.out.println();
}
System.out.println(valueWrapper.get());
}
}
Si prega di suggerire, perché valueWrapper.get() non restituisce nulla, anche se widget viene assegnato di riferimento valore nullo .
Grazie.
Il GC non è un conteggio dei riferimenti, quando annulli quel riferimento, il GC non lo sa ancora - lo troverà durante il prossimo ciclo del GC. – harold
@harold: upvoting. – mogli