▣ Unity C# 메모리 구조
Unity에서 C#을 사용하여 개발할 때, 메모리 구조는 매우 중요한 역할을 합니다. C#의 메모리 구조는 일반적인. NET 메모리 관리 방식을 따르며, 크게 다음과 같은 세 가지 주요 영역으로 나눌 수 있습니다:
1. 스택(Stack)
설명: 스택은 함수 호출 시 생성되는 지역 변수와 함수 호출 정보를 저장하는 영역입니다. 스택은 LIFO(Last In, First Out) 방식으로 동작하며, 함수가 종료되면 자동으로 메모리에서 해제됩니다.
용도: 지역 변수, 함수의 매개변수, 함수 호출 정보가 저장됩니다.
특징: 메모리 할당과 해제가 매우 빠르며, 스택의 크기는 제한적입니다.
2. 힙(Heap)
설명: 힙은 동적으로 할당된 메모리가 저장되는 영역으로, 객체 인스턴스가 여기에 저장됩니다. 힙은 크기가 가변적이며, 프로그램이 종료되기 전까지 메모리에 남아 있을 수 있습니다.
용도: 클래스 인스턴스, 배열 등 동적으로 생성된 데이터가 저장됩니다.
특징: 메모리 관리가 더 복잡하며, 가비지 컬렉터가 사용되지 않는 객체를 자동으로 해제합니다.
3. 데이터 영역(Data Segment)
설명: 데이터 영역에는 전역 변수, 정적 변수 등이 저장됩니다. 이 영역은 프로그램 시작 시 할당되며, 프로그램이 종료될 때까지 존재합니다.
용도: 초기화된 전역 변수와 정적 변수가 저장됩니다.
특징: 전역적으로 접근 가능하며, 프로그램의 수명 동안 유지됩니다.
C# 메모리 관리의 특징:
가비지 컬렉션(Garbage Collection): C#에서는 힙에 할당된 메모리를 자동으로 관리하기 위해 가비지 컬렉터가 동작합니다. 더 이상 참조되지 않는 객체는 가비지 컬렉터에 의해 메모리에서 해제됩니다.
메모리 누수 방지: 가비지 컬렉션은 메모리 누수를 방지하는 데 유용하지만, 여전히 개발자가 직접 메모리 관리를 신경 써야 하는 경우가 있습니다(예: 이벤트 핸들러에서 발생하는 참조 유지 등).
https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 struct와 class의 차이 (4) | 2024.09.02 |
---|---|
유니티 Array, List, Dic , Call by Reference, Call by Value (0) | 2024.08.31 |
유니티 Delegate (0) | 2024.08.31 |
유니티 Lambda (0) | 2024.08.28 |
유니티 interface (0) | 2024.08.13 |
댓글