반응형
안녕하세요 돼지왕왕돼지입니다.
C# 을 공부하면서 그동안 뭔가 깔끔히 정리되지 않았던 Stack Memory, Heap Memory, Variable, Reference 의 관계에 정리가 잘 되는 그림 및 글을 발견하여 함께 공유하고자 합니다.
이를 이해하는 것은 Garbage Collection 을 운영하는 Java 와 C# 에 매우 중요합니다.
<C# 코드>
void test(){ object a = 10; object b = 20; }
<함수 안에서의 memory 구조>
이런식으로 Stack 에 Heap 주소를 참조하는 a, b 각각의 variable 이 assign 됩니다.
integer 이긴 하지만, object 에 값을 할당하였기 때문에 그 값은 Heap memory 에 assign 됩니다.
<함수가 끝난 후의 memory 구조>
함수가 끝나면 기본적으로 local variable 형태로 쓰여 stack 에 공간을 차지하고 있던 변수들은 제거됩니다. ( pop ) 그럼 이제 heap memory 를 참조하는 link 가 끊어지게 되고, 저 2000 과 4000 주소에 있는 heap memory 공간은 garbage collection 공간의 됩니다.
문제는 global variable 을 사용할 때인데, 원리는 같기 때문에 reference를 사용 후 계속 사용하지 않는다면 바로 해제해주는 메모리 관리 측면에서 좋습니다.
어떤가요? 그림으로 보니깐 이해가 쫌 쉽죠?
반응형
'프로그래밍 놀이터 > C, C++, C#, VB' 카테고리의 다른 글
[Java 개발자가 공부해본 C#] 형 변환 ( Type Conversion ) 시 주의할 점 (0) | 2012.04.15 |
---|---|
[Java 개발자가 공부해본 C#] C#에서 제공하는 Data Type. (0) | 2012.04.15 |
[Java 개발자가 공부해본 C#] 변수 초기화 ( Initialize ) 에 대하여. (0) | 2012.04.15 |
[Java 개발자가 공부해본 C#] CLR ( Common Language Runtime ) 에 대하여. (0) | 2012.04.15 |
[Java 개발자가 공부해본 C#] C#에서 Exception 이 발생하면.. (2) | 2012.04.15 |
댓글