Mi chiedo se si ritenga una buona pratica rimuovere i riferimenti (impostandoli su null
) su oggetti per aiutare il Java Garbage Collector.È buona norma rimuovere i riferimenti per aiutare il GC?
Ad esempio, supponiamo di avere una classe con due campi, uno dei quali richiede molta memoria. Se sai che ne hai solo bisogno per una particolare elaborazione, puoi annullarla subito dopo per aiutare il GC.
Supponiamo che io abbia davvero bisogno che quei due siano campi, e non solo variabili interne, quindi heavyObject1
non può essere fuori portata alla fine del metodo.
Faresti questo come pratica generale?
public class TestClass {
public static Object heavyObject1;
public static Object object2;
private static void action() {
object2 = doSomething(heavyObject1);
heavyObject1 = null; //is this good?
}
}
Il problema con questo comportamento è che è incompatibile con i campi finali e pertanto rende il codice più difficile da thread sicuro. – SpaceTrucker
"Dereferimento" indica il recupero della cosa a cui si fa riferimento. L'ho modificato e cambiato. – delnan