NonPropStudent가 GC이후 invalid된 이유
77
작성한 질문수 4
모든 UObject는 가비지컬렉션의 대상인데,
예제의 PropStudent는 UPROPERTY() 선언으로 레퍼런싱되어서 가비지컬렉션이후에도 Valid한 상태를 유지하였고, 레퍼런싱되지 않은 NonPropStudent는 가비지컬렉션에 의해 수거된 거 아닌가요?
답변 2
0
안녕하세요.
혹시 쓰신 내용이 강의 내용에 대한 질문인지 아니면 이해한 내용에 대한 확인인지 궁금하네요.
언리얼 오브젝트가 Valid하다는 것과 메모리 누수는 조금 다른 결에서 이해해주시면 좋을 것 같습니다.
아래 유사한 질문에 대한 답변 한번 참고해보세요
https://inf.run/TCHc7
0
안녕하세요, 인프런 AI 인턴입니다. 고객은왕님께서 묻는 질문에 대한 답변을 드리겠습니다.
질문하신 내용에서 언급되는 PropStudent와 NonPropStudent의 차이는 바로 UPROPERTY 매크로에 있습니다.
PropStudent (UPROPERTY):
PropStudent가 UPROPERTY 매크로로 선언되었다는 것은 해당 오브젝트가 언리얼 엔진의 가비지 컬렉션 시스템에 의해 제대로 참조되고 있다는 뜻입니다. 이를 통해 메모리에서 유효한 상태로 유지되며, 수거되지 않는다는 것을 보장받습니다. 따라서, 가비지 컬렉션 이후에도 여전히 “Valid”한 상태를 유지할 수 있게 됩니다.NonPropStudent:
반대로, NonPropStudent는 UPROPERTY 매크로 없이 선언된 객체입니다. 이 경우, 가비지 컬렉션 시스템은 해당 객체를 추적하지 않으며, 이로 인해 수거 대상이 될 수 있습니다. 가비지 컬렉션시에 존속할 다른 참조가 없기 때문에 메모리에서 제거되거나 “Invalid” 상태가 되는 것이 일반적입니다.
비슷한 맥락의 질문과 답변이 있어서 추천드립니다:
- 메모리 관련 부분에서 질문입니다.
- 여기서는 UPROPERTY 매크로의 역할과 이를 사용하지 않은 경우 가비지 컬렉션에서 객체가 어떻게 처리되는지를 설명합니다.
언리얼 엔진에서의 메모리 관리 및 객체의 생존과 관련된 이러한 차이는 UPROPERTY 매크로 사용 여부에 의해 크게 좌우됨을 이해하는 것이 중요합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
저는 저 노란색 미리보기 창이 안뜹니다
0
11
1
강의중에 사용하는 ppt 수업 자료
0
32
1
GetName(), SetName() 함수의 오버로딩 관련 문제 문의드립니다.
0
31
1
언리얼 공부 방법에 대해서 질문드립니다.
0
66
1
컴포지션을 위한 컴포넌트 생성에 관해 질문드립니다.
0
80
2
if (NameProp) 은 if (NameProp != nullptr)이랑 같은 의미인가요?
0
91
2
언리얼 계정 로그인 불가 문제
0
114
2
가비지컬렉션 주기를 짧게 유지하면 어떤 이슈가있을까요?
0
72
2
11강 TArray TSet 에 대해서 질문있습니다.
0
69
1
Unreal 연동 후 Visual Studio 빌드오류 제발 살려주십쇼
0
356
3
언리얼에서 제공하는 스마트 포인터 라이브러리 사용
0
71
2
FGCObject 상속 받은 객체에서 Uobject 삭제를 원할 때
0
78
2
게임 내 인벤토리 데이터를 관리 할 경우, TArray / TSet 무엇이 올바를까요?
0
73
2
8강 컴포지션 중 궁금한 것이 있습니다.
0
54
2
헤더 파일 분리 방법
0
82
2
언리얼 엔진 깃 설치
0
84
2
FObjectInitializer 를 사용한 생성자.
0
95
2
언리얼엔진 에서 새로운 클래스를 생성하면
0
74
2
GetName이 이미있는데용?
0
110
2
TObjectPtr 과 일반 포인터에 대한 용도 질문
0
104
2
UPROPERTY() 다음 라인에서 세미콜론이 입력되지 않습니다.
0
162
1
[18:50] 패키지 저장 시 이미 패키지가 있으면 로딩을 다 하고 저장하는 것이 좋은 이유가 궁금합니다
0
136
2
[44:22] 커스텀 구조체에서 GetTypeHash() 와 operator== 를 오버로딩 하는 이유에 대한 질문
0
106
2
문제풀이 오류 질문
0
90
2





