Winform에서 참조 관련으로 궁금한 부분이 있습니다.

조건 1. A라는 클래스가 있고,

조건 2. A에 인스턴스 A’ , A’'있고,

조건 3. A’'이 A’를 참조하고 있다고 가정했을때.

만약 GC가 A’을 메모리 회수할 때 A’'의 참조가 끊어져야 회수가 이루어지잖아요

질문 1. A’’ = null 을하면 참조가 해제되나요?

질문 2. A’이 전역변수이고, A’'이 지역변수라 했을 때, 지역변수의 참조까지 해제해야 A’의 메모리가 반환되나요?

1개의 좋아요

참조를 카운트로 이해하면 좋습니다. 하나의 인스턴스가 여러 참조될 수 있으니까요.

GC가 메모리를 회수하는 조건은 참조가 0이 될 때입니다.

이것은 A’의 메모리를 회수하는 조건이 아닙니다. A’가 회수되면서 A"의 참조 카운트가 -1 되는 것이지요.

A"의 참조가 끊어져야 A’가 회수될 수 있는 것이 아닙니다.

A던, A’던 A"던, 이 인스턴스를 참조하는 갯수가 0이 될 때 메모리가 회수됩니다.

그러므로,

질문1은 아닙니다. A’를 더이상 참조하지 않으면 A’는 회수됩니다.
질문2도 역시 아닙니다.

기준은 해당 인스턴스가 더이상 참조되지 않을 때 (참조 카운트가 0일 때) 입니다.

3개의 좋아요