아니요. 이유는 개체를 null로 설정하지 않기 때문입니다. 당신이 말할 때 obj = null;
null
을 객체에 대한 참조를 보유하고있는 변수에 넣는다. 아마도 같은 객체에 대한 다른 많은 참조가있을 것입니다.
나는 싶은 것은 종류의 객체를 무효화 수집이 쓰레기를 만들하지만 클래스 내부의이 결정을하는 것이라고 생각합니다. 이것이 문제라면 약한 참고 문헌을 살펴보기를 권합니다.
다른 가능한 해결책은 java에서 "스마트 참조"를 구현하는 것입니다. 객체에 대한 실제 참조를 보유 할 클래스 SmartReference
을 만들 수 있습니다. 객체는이 스마트 참조에 대한 콜백을 보유하고 구문 적으로 잘못된 표현 인 this = null
과 같은 어떤 메소드 invalidate()
을 호출해야합니다. 그러한 객체를 직접 참조하지 말고 스마트 참조 만 사용해야합니다.
유일한 질문은 "왜 이것을하고 싶니?"입니다. 실제로 이것은 코드가 더 복잡하고 불안정해질 수 있습니다. 상상해보십시오 : 객체가 무효화하기로 결정 했으므로 "스마트 참조"가 보유하고있는 참조가 null
이됩니다. 이제 개체를 사용하려고 할 때이 스마트 참조의 모든 소유자가 NPE를 얻습니다! 이러한 메커니즘이 java에 존재하지 않으며 응용 프로그램 프로그래머가 직접 메모리를 관리 할 수없는 이유입니다.
결론 : 모든 개체 참조를 제거하고 GC로 하여금 열심히하도록하십시오. 그것을 믿어 라. 그것은 쓰레기를 청소하는 것을 알고 있습니다.
런타임시 클래스의 존재는 오브젝트 때문입니다. 존재하지 않는 것은 무엇을 의미합니까? 객체가 존재하지 않는다면 바로 그 것입니다. 그리고 그것은 gc가하는 일입니다. 그렇죠? 무료 참조? –
'this = null'은 무엇을 기대하고 있습니까? – NPE
가능한 복제본 [Java에서 null이 될 수 있습니까?] (http://stackoverflow.com/questions/3789528/can-this-ever-be-null-in-java) – skaffman