... | ... | @@ -6,7 +6,7 @@ |
|
|
* **garbage collector :** 메모리를 관리해주는 mechanism.
|
|
|
|
|
|
* **garbage collection :** 메모리를 해제하고 새롭게 재배치 하는 작업을 칭하고 자동으로 수행되지만 수동으로도 수행을 명령할 수도 있다. garbage collection이 수행되는 시기는 개발자가 알 수 없지만 분명한 것은 메모리가 부족하면 분명 garbage collection이 일어난다는 것이다.
|
|
|
[garbage collector 동작방식](##### #A garbage collector 동작 방식)
|
|
|
[garbage collector 동작방식](#first)
|
|
|
|
|
|
|
|
|
* **==garbage collector 동작방식^noteA)^ :==** CLR의 heap은 generation로 나뉘어 관리된다. managed heap 입장에서 generation을 구분하는 것은 단지 메모리의 위치를 가리키는 내부 포인터에 의해 이뤄진다. 처음 new로 할당된 객체는 generation 0에 속한다. generation 0객체의 총 용량이 일정 크기를 넘어가면 GC는 가비지 수집을 한다. 사용되지 않는 generation 0 객체가 있으면 없애고, 그 시점에도 사용되고 있는 객체는 generation 1로 승격한다. generation 1로 승격된 객체의 총 용량도 일정 크기를 넘어가게 되면 CG는 generation 0, 1세대에 모두 가비지 수집을 한다. 1세대의 객체가 그 시점에도 사용되고 있으면 generation 2로 승격한다. generation 2로 승격된 객체의 총 용량도 일정 크기를 넘어가게되면 GC는 generation 0, 1, 2의 모든 객체를 가비지 수집한다. CLR의 generation은 generation 2가 끝이다. 이후 generation 2의 메모리 공간은 시스템이 허용하는 한 계속 커지게 된다.
|
... | ... | @@ -424,7 +424,7 @@ WPF에서는 INotifyCollectionChanged interface를 구현하는 data collection |
|
|
|
|
|
* * *
|
|
|
### ==Note & Tips==
|
|
|
##### **#A garbage collector 동작 방식**
|
|
|
##### <a name = "first">**#A garbage collector 동작 방식**
|
|
|
|
|
|
``` cs
|
|
|
static void Main(string[] args)
|
... | ... | |