일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- FIND
- c++11
- SSH
- postgresql
- autovacuum
- python
- mysql
- Eclipse
- List
- 배열
- pandas
- DROP
- ngui
- 쉘
- conda
- with
- boost
- SVN
- sql
- C++
- Shader
- ubuntu
- Unity
- expect
- awk
- pi
- sqlite
- dataframe
- if
- null
Archives
- Today
- Total
その先にあるもの…
WeakReference 본문
약한 참조
Class Test{}
Test pTest = new Test();
Test pRef = pTest;
pTest = null;
CG.Collect();
강한 참조를 보여주는 코드이다.
가비지에서는 pRef에 참조가 있기 때문에 메모리를 해제하지 못한다.
Class Test{}
Test pTest = new Test();
WeakReference pRef = new WeakReference( pTest );
pTest = null;
CG.Collect();
약한 참조를 보여주는 코드
참조를 하였지만 가비지에서는 메모리를 수거해간다.
P.S
mono 2.8.6.3 .net 4.0에서 테스트
Class Test{}
Test pTest = new Test();
WeakReference pRef = new WeakReference( pTest );
pTest = null;
CG.Collect();
Console.WriteLine( "pRef : {0}", ( pRef.Target == null ? "dead", "live" ) );
pRef : live
CG.Collect();를 수행한 후에도 pRef.Target이 살아있다.
다른 함수에서 pRef를 가져와서 출력해보니 죽어있음을 확인
시간이 지나서 소멸되는 것인가 확인하기 위해
System.GC.WaitForFullGCComplete();
를 호출하니 오류 발생.
조금 더 테스트가 필요한다.
'프로그래밍 > C#' 카테고리의 다른 글
클래스가 소멸할 때 멤버변수가 클래스인 것은 null이 되는지 궁금 (0) | 2014.09.19 |
---|---|
Dictionary value 변경 (0) | 2014.09.01 |
CreateInstance, InvokeMember (0) | 2014.04.21 |
unsafe (0) | 2014.03.28 |
C#> struct -> string (0) | 2013.10.31 |
Comments