728x90
728x90
메모리의 정적/동적 할당 유니티 컴파일러가 실행되는 동작 순서는 정적 메모리 영역 -> 동적 메모리 영역이다. 세부적으로 나눠서 살펴보면 먼저 정적 메모리 공간의 함수들이 실행되고, 정적 영역의 static 변수들이 실행된다. 그 다음 동적 메모리 공간에 저장된 변수들이 실행되게 된다. 유니티 싱글톤(Singleton) 패턴 활용 이러한 메모리 할당 개념을 바탕으로, 싱글톤 객체를 설명해보고자 한다. 일단 유니티에서 생성되는 모든 객체는 최초로 동적 메모리 공간인 heap에 올라간다. 하지만 heap 영역에 위치한 객체들은 사용 범위에 한계를 가지고 있을 수 있다. 그렇기 때문에 객체 클래스 자체를 static 영역에 올리고 instance를 생성해 각각 클래스 별로 뿌려줄 수 있다. 이 것이 바로 관리..
Get/Set 프로퍼티와 객체지향 캡슐화 객체지향의 3요소는 캡슐화, 상속, 다형성이다. 상속 상속의 대표적인 예시는 C# 스크립트의 첫 장면에서 확인할 수 있다. 스크립트를 생성하면 Class AA : MonoBehaviour라고 상단에 표시된다. 이는 AA 라는 클래스가 MonoBehaviour라는 부모 클래스를 상속 받은 개념이다. MonoBehaviour에 마우스 커서를 대고 F12를 누르면 MonoBehaviour 클래스를 볼 수 있는데 MonoBehaviour 클래스 역시 Behaviour를 상속받은 것을 확인할 수 있다. 이 역시 들어가보면 Component 클래스를 상속 받고 있고, Component 클래스 역시 Object 클래스를 상속 받은 것을 확인할 수 있다. 즉, 객체 지향에서 사..
this 키워드 메모리는 저장되는 주소, 변수는 그 주소를 한 번에 볼 수 있는 이름의 개념으로 생각하면 된다. 예) 서울역(변수), 서울시 중구 한강대로 405(메모리) Class는 Heap 영역, 함수는 Code 영역(함수만 들어가 있는 table이 있어 호출하는 개념), 변수는 Stack영역에 저장 obj a = new obj() 객체를 생성하면 heap 메모리 공간에 할당한다. Gameobject obj = new GameObject(); - GameOjbect : 클래스 - obj : 변수 - new GameObject() : 생성자 함수(객체를 생성해주는 함수, heap 메모리 공간 할당) this는 함수와 변수 등이 저장되어 있는 메모리 영역에 관련한 이슈, C/C++ 참고 GameObjec..
오브젝트 풀링(Object Pooling)와 가비지 콜렉션(Garbage Collection) 오브젝트 풀링은 총알을 미리 탄창에 넉넉하게 장전해 놓는 다는 개념으로 생각하면 된다. 오브젝트 풀의 핵심은 배열과 리스트로, 배열은 방의 크기가 정해져있고 자리가 고정되어 있기 때문에 추가와 삭제가 매우 어렵다. 반면 리스트는 추가와 삭제가 매우 쉽고 검색은 때에 따라 배열보다 쉽다. 오브젝트 풀링은 메모리 최적화에 매우 중요한 기능이다. 해당 내용을 이해하기 위해서는 먼저 가비지 콜렉터(Garbage Collector)의 개념을 이해해야 한다. 가비지 콜렉터가 수행하는 가비지 콜렉션(Garbage Collection)은 파편화된 메모리리를 정리해주는 기능이다. 시스템 상 메모리는 배열 형식으로 순서대로 저장..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.