다음과 같은 클래스 구조가 있습니다.Android 앱에서 메모리 누수가 발생했습니다.
class A
{
B b;
A()
{
b = new B();
b.a = this;
}
}
class B
{
A a;
}
class C
{
A a = new A();
//a is ready for Garbage collection
a = null;
}
활동 파기(), I는 변수 a = NULL을 설정한다. 하지만 힙에서 여전히 변수 b가 B에 대한 참조를 보유하고 있음을 알 수 있습니다.
누구든지 설명 할 수 있습니까?
아마도 아직 수집되지 않았을 수 있습니다. gc 강제로 시도한? – Memme
@ Memme gc 강제로 나쁜 생각입니다! 메모리 누출을 멈추고 시도하지 말아야합니다. 물론 – apmartin1991
@ apmartin1991. 그러나 나는 단지 그것을 확인했을 것입니다. 어쨌든 당신이 C로 새로운 객체를 인스턴스화하고 그것을 null에 두는 것은 그 특정 인스턴스만을 수집 할 것입니다. 하지만 내가 틀릴 수도 :) – Memme