2009-10-07 4 views
1

.NET 3.5, 최대 1MB의 문자열을 저장하는 클래스가 있습니다. 비록 내가 오랜 시간 동안 그 객체를 필요로한다 할지라도, 나는 그 문자열을 오랫동안 저장할 필요가 없다.긴 수명의 객체에서 메모리의 큰 필드 지움

부모 개체를 삭제하지 않고 메모리에서 문자열을 제거하려면 어떻게해야합니까?

이 경우 "myString = null"을 사용하는 것이 좋습니다. 또는 그것을 개인적인 일회용 클래스 또는 다른 것으로 포장해야합니까?

답변

2

IDisposable은 메모리 관리와 관련이 없습니다. 개인 변수에 null을 할당하면됩니다. Flyweight이 맞는 지 확인하십시오.

0

WeakReference으로 생각하십니까?

+0

실제로 구현했지만 맞춤 캐싱으로 변경하는 것이 좋지 않았습니다. 솔직히 말해서 메모리 누수가 어디 있는지 모르겠다. 어쩌면 내 문자열이 메모리에서 빠져 나간 것일 수도있다. 복잡한 응용 프로그램을 프로파일 링 할 수있는 적절한 메모리 프로파일 러를 찾을 수 없습니다. –

+2

참조 : http://msdn.microsoft.com/en-us/library/ms404247.aspx. 이 기사에서 "약한 참조를 메모리 관리 문제에 대한 자동 해결책으로 사용하지 말고 응용 프로그램의 객체를 처리하기위한 효과적인 캐싱 정책을 개발하십시오." – MusiGenesis

+1

@MusiGenesis 그것이 내가 디자인을 바꾼 이유입니다. –

0

문자열을 메모리에서 활성 상태로 유지하고있는 프로그램의 다른 곳 (예 : TextBox?)에서 문자열을 참조하거나 복사하고있을 가능성이 있습니다.

+0

나는 그 부분을 추적하려고 노력했다. –