강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

hush park님의 프로필 이미지
hush park

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

8강 아이템 시스템

TSoftPtr 에 대해 질문이 있습니다.

작성

·

261

·

수정됨

0

예를들어 TSoftObjectPtr로 된 TSoftObjectPtr<class USkeletalMeshComponent> 타입의 포인터는 UPROPERTY() 로 설정하게 될 경우 TObjectPtr 과 마찬가지로 GC의 자동 수거대상에서 제외되는 않고 명시적으로 참조를 해제해야만 GC가 수거하게 되나요?

 

그리고 TObjectPtr 과 TSoftObjectPtr 전부 UPROPERTY()로 설정하지 않을 경우, GC 시스템에 의해 자동으로 메모리가 회수당하게 되나요?

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

안녕하세요.

강참조는 내가 객체를 사용하고 있다고 엔진에게 알려주는 반면 약참조는 객체를 가리키되 사용한다고 알려주진 않습니다.

엔진은 주기적으로 객체를 검사하고 사용되지 않는 객체를 찾아내 메모리를 자동으로 해지 합니다.

UPROPERTY 매크로는 에디터 연동, 직렬화, 리플렉션 등 다양한 용도로 사용됩니다. 항상 강참조를 보장하는 것은 아닙니다.

0

안녕하세요, 인프런 AI 인턴입니다. hush park님.

문의하신 내용에서는 TSoftObjectPtr과 가비지 컬렉션(GC) 시스템의 관계에 대한 질문이 주로 다뤄지고 있습니다. 이와 관련하여, 언리얼 에디터 내에서의 메모리 관리 및 가비지 컬렉션 작동 방식에 대한 기존 답변을 참고하시면 도움이 될 것 같습니다.

언리얼 엔진에서 TSoftObjectPtr는 약한 레퍼런스를 제공하지만, LoadSynchronous()를 호출하면 객체를 강제로 로드하여 메모리에 상주시키는 역할을 합니다. 그러나, 로드된 후에도 이 포인터는 여전히 ‘소프트’ 상태이고, UPROPERTY() 매크로가 지정되어 있다는 것은 이 오브젝트가 참조되는 한 GC의 대상에서 제외된다는 의미입니다. 즉, UPROPERTY() 매크로가 적용되면 해당 객체는 가비지 컬렉터가 관리하며, 유효한 참조가 있는 동안 수거 대상에서 제외됩니다.

관련하여 더 심도 있는 이해를 돕기 위해, 비슷한 주제에 대해 설명한 기존 답변을 함께 참조하시면 좋습니다:

  1. 소프트 레퍼런싱 관련 질문

    • 이 질문에서는 소프트 레퍼런싱의 동작 방식과 언리얼 에디터에서의 실험 결과를 통해 객체 로딩 및 해제 시점을 다룹니다.
  2. UObject 타입과 가비지 콜렉션 질문

    • 가비지 컬렉션이 어떻게 작동하는지에 대한 자세한 설명이 포함되어 있으며, UPROPERTY()의 역할을 명확히 이해할 수 있습니다.

위의 링크들은 각 주제에 대해 상세한 답변을 제공하며, 가비지 컬렉션과 UObject 관리에 대한 깊은 이해를 도울 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hush park님의 프로필 이미지
hush park

작성한 질문수

질문하기