- WeakReferences로 채워지는 사전이 있습니다.
- 웹 서비스 A : 개체를 만들고 약한 참조 사전에 배치합니다. (1)
- 웹 서비스 A는 객체를 강력한 레퍼 런으로 유지하지만 가끔은 그렇지 않습니다.
은 내 문제 : 나는 쓰레기 수집기가 즉시 수집하지 않기 때문에 약한 참조 사전에서 제거되어야한다 물체를 추적 할 수논리 목적을 위해 수집되어야하는 추적 개체
, 그것은 단지 시간의 임의의 예측할 수없는 시간 후에 수집합니다.
동작
예실시 예 1, 일치하지 않는 예상대로 가변 EX1 즉시 수집 작동한다.
Sub Example1(id as integer)
Dim ex1 as new Object
dim t as new WeakReference With {.target = ex1};
WeakReferenceDictionary.add(id,ex1)
End Sub<br>
예 2 '이 작동하지 않습니다는, 외부 1은 imeediately 내가 시도
Sub Example1(id as integer)
Dim ex1 as new Object
dim t as new WeakReference With {.target = ex1};
WeakReferenceDictionary.add(id,ex1)
otherclass.refObject = ex1
otherclass.refObject = Nothing
End Sub<br>
를 수집하지 않습니다.
모듈 1 안에 WeakDictionary를 배치합니다 (콘솔 응용 프로그램 임).
GC.Collect를
하는 GC.Collect (0)
GC.Collect를 (1)
GC.Collect를 (2)
내 질문. 응용 프로그램의 성능이 저하되는 경우에도 가비지 수집을 강제 실행해야합니다. 나는 논리 목적을 위해 GC를 사용해서는 안된다는 것을 알고 있지만, 내 솔루션은 이런 식으로하는 것이 정말 편리합니다.
물론 ... 나는이 솔루션 자체의 팬이 아니지만 애플리케이션에 의해 참조 된 로그너가 없을 때 이러한 개체를 추적해야합니다. 모든 응용 프로그램에서 참조 카운터를 구현하는 것은 엄청난 노력 일 것이며 가비지 수집 알고리즘을 사용하는 것이 훨씬 간단하고 우아하며 신뢰할 수 있습니다. GC에 대한 제안 대신 실제로 강제하는 방법이 있는지 알고 싶습니다. – jri