기본적으로 저는 Java에 상당히 익숙하지 않습니다. 그리고 다음과 같은 저의 머리를 쓰려고 노력하고 있습니다.범위를 벗어 났지만 여전히 참조를 보유하고있을 때 Java GC에 어떤 현상이 있습니까?
public class Test {
TestObject objectA;
public static void main(String args[])
{
Test t = new Test();
t.test();
while (true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
System.out.println("Obj A: " + t.objectA.toString());
}
}
void test(){
Object objectB = new TestObject(1, 1);
objectA = (TestObject)objectB;
System.out.println("Obj B: " + objectB);
objectB = null; System.out.println("Obj B: " + objectB);
}
}
출력 :
Obj B: [email protected]
Obj B: null
Obj A: [email protected]
Obj A: [email protected]
기본적 난 (방법] 시험에서 로컬 객체 objectB를 생성)하고 피 검체 내부 변수 objectA 참조의 할당하고있다.
그런 다음 로컬 변수를 null로 설정하고 참조가 null인지 확인합니다.
여기 내 이해에서부터 효과적으로 개체에 대한 포인터를 nulled했습니다. 개체는 유일한 참조를 포함하는 objectA와 함께 계속 존재합니다. 이것은 가비지 콜렉터가 범위가 좁은 메소드에서 작성된 오브젝트를 수집하지 않는다는 것을 의미합니까?
objectA에 대한 포인터를 null로 설정하면 객체가 수집됩니까?
죄송합니다.이 답변이 분명한 질문 인 것 같으면 이미 읽은 내용을 이해하고 있어야합니다.
저를 위해 그것을 지우는 환호. –