게임엔진/유니티

(토막상식) 유니티 메모리

tsyang 2023. 5. 21. 18:11

메모리 종류


Managed Memory : GC가 적용되는 유저 영역의 메모리 레이어.

Umanaged Memory(C#) : GC가 적용되지 않는 메모리 레이어, Unity.Collections 패키지를 통해 사용할 수 있는 공간이다. 

Native Memory(C++) : 유니티 엔진이 돌아갈때 쓰는 C++ 메모리이다. 일반적으로 유저가 접근 불가능한 영역.

 

 

Managed Memory

Mono나 IL2CPP나 VM에 managed memory 시스템이 있다. (=scripting memory system).

managed heap : VM이 자동으로 GC써서 컨트롤 해주는 힙 메모리 영역. 여기에 메모리 할당하는걸 GC Allocation이라고도 한다. 

scripting stack : 그냥 스택영역..

Native VM memory : 유니티의 scripting 레이어에 연관된 메모리를 포함함. 코드 영역의 메모리(제네릭, 리플렉션 포함)를 포함하고 있음.

 

 

C# Unmanaged Memory :

이 레이어를 통해 native memory에 접근해서 메모리 할당을 튜닝할 수 있음. 

 

 

Native Memory :

유니티 엔진 내부의 C/C++ 코어가 쓰는 메모리 관리 시스템. 엔진 내부에서 돌아가는 데이터들은 여기에 올라간다. 여기에 직접 접근은 어렵고 간접적으로 접근할 수 있는데 (Unity.Collections) 예를 들면 ECS로 개발할 때 엔진 내부 데이터를 NativeList로 받아올 수 있음.