일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Unity
- ubuntu
- mysql
- SVN
- ngui
- expect
- boost
- Eclipse
- with
- 쉘
- python
- pi
- postgresql
- 배열
- pandas
- C++
- null
- Shader
- FIND
- SSH
- conda
- if
- c++11
- dataframe
- sql
- DROP
- List
- autovacuum
- sqlite
- awk
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