GC odsmieci czy nie?

0
class A {

    B refB;

    public A(B b) {

        refB = b;
    }
}

class B {
    
    A refA;
    
    public B(A a){
        refA=a;
        
    }
    
}


A a = new A( new B(a));
a =null;

a zostanie odsmiecony z cala zawartoscia, czy tez nie? GC usuwa obiekty, do ktorych moga byc referencje , ale nie mamy bezposredniego dostepu ( tak jak wyzej, gdy do a przypiszemy null), czy tez obiekty, do ktorych nie ma zadnych referencji?

0

Akurat ten kod się nie skompiluje. Polecam ustawić zależności setterami. Jak chcesz się dowiedzieć, to po prostu odpal tworzenie takich cykli w pętli. Jeśli twój JVM będzie odśmiecał cykle to i tak nie znaczy to, że to jest wymuszone przez specyfikację Javy. A ja sam nie jestem pewien.

0

Faktycznie moj blad, nie skapiluje sie. Ale wiadomo o co chodzi.
Zasadniczo, to chce wiedziec, czy mozna tak swawolnie robic nie martwic sie o poprawne odsmiecanie.

1

to byłoby bez sensu, gdyby nie potrafił tego odśmiecić...

1

Oczywiscie ze sie odsmieci. Zwykle liczenie referencji to maja Python, Ruby i inne. JVM maja 'powazne' GC.

1 użytkowników online, w tym zalogowanych: 0, gości: 1