C# 메모리 관리에 대한 질문이 있습니다. 클래스 A의 새로운 인스턴스를 생성하면 클래스 B를 볼 수 있듯이C# 메모리 관리
public class B
{
public StringBuilder sb;
public B()
{
A a = new A();
sb = a.sbOne;
}
}
:
public class A
{
public StringBuilder sbOne = new StringBuilder();
public StringBuilder sbTwo = new StringBuilder();
public StringBuilder sbThree = new StringBuilder();
}
그리고 하나의 StringBuilder 개체가 다른 간단한 클래스 : 나는 세 가지의 StringBuilder 개체가 간단한 클래스가 상상 그것은 생성자이며, StringBuilder 필드를 a.sbOne에 할당합니다. 이 상황에서 메모리가 어떻게 해제됩니까? a.sbTwo와 a.sbThree는 참조가 없으므로 가비지 컬렉션을 사용할 수 있습니까? 또는 sbOne 필드가 계속 참조되는 a의 부분이므로 메모리에 보관됩니까?
EDIT : DateTime이 struct이기 때문에 DateTime이 StringBuilder로 변경되었으며이 클래스가 클래스라고 가정하고있었습니다.
'DateTime'은 * 값 * 유형이라는 점에 유의하십시오. 별도의 객체가 없습니다. 참조 유형을 사용하도록 예제를 변경 하시겠습니까? 예 : 'StringBuilder' 또는 그런 것? –
Jon Skeet은'date'가'a.dateOne'에 대한 참조가 아니라는 것을 의미합니다. 'DateTime'은 구조체이기 때문에'a'는'a.dateOne'의 * copy *입니다. –
내 잘못. 나는 DateTime이 구조체가 아니라 클래스라고 가정하고 있었다. 내 잘못이야. 예, 대신 StringBuilder를 가정하고 같은 질문을합니다. – mesman00