UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ObjectMemoryAnalyzer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "CoreMinimal.h"
8#include "HAL/PlatformCrt.h"
9#include "HAL/PlatformMath.h"
12
13class FOutputDevice;
14class UClass;
15class UObject;
16
77
78
83{
86 {
87 enum Type
88 {
91 };
92 };
93
106
108 {
112
113 inline bool operator()( const FObjectMemoryUsage& A, const FObjectMemoryUsage& B ) const
114 {
115 switch (SortKey)
116 {
117 case ESortKey::InclusiveSize: return A.InclusiveMemoryUsage > B.InclusiveMemoryUsage;
118 case ESortKey::ExclusiveSize: return A.ExclusiveMemoryUsage > B.ExclusiveMemoryUsage;
119 case ESortKey::InclusiveResSize: return A.InclusiveResourceSize > B.InclusiveResourceSize;
120 case ESortKey::ExclusiveResSize: return A.ExclusiveResourceSize > B.ExclusiveResourceSize;
121 case ESortKey::InclusiveTotal: return (A.InclusiveMemoryUsage + A.InclusiveResourceSize*1024) > (B.InclusiveMemoryUsage + B.InclusiveResourceSize*1024);
122 case ESortKey::ExclusiveTotal: return (A.ExclusiveMemoryUsage + A.ExclusiveResourceSize*1024) > (B.ExclusiveMemoryUsage + B.ExclusiveResourceSize*1024);
123 }
124
125 check(false);
126 return false;
127 }
128
130 };
131
136
142 COREUOBJECT_API void AnalyzeObjects(class UClass* BaseClass);
143
148
150 {
158 };
159
161
162private:
163 int32 GetReferencedObjects(UObject* Obj, TArray<UObject*>& ReferencedObjects);
164 void ProcessSubObjRecursive(UObject* Root, UObject* Object);
165 SIZE_T CalculateSizeRecursive(UObject* Object);
166 FString GetFlagsString(const FObjectMemoryUsage& Annotation);
167 void PrintSubObjects(FOutputDevice& Ar, const FString& Indent, UObject* Parent, uint32 PrintFlags);
168
169
171 UClass* BaseClass;
173 TArray<UObject*> ObjectList;
177 uint32 AnalyzeFlags;
178};
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition OutputDevice.h:133
Definition UObjectAnnotation.h:1153
Definition Array.h:670
Definition Class.h:3793
Definition Object.h:95
Definition ObjectMemoryAnalyzer.h:86
Type
Definition ObjectMemoryAnalyzer.h:88
@ IncludeDefaultObjects
Definition ObjectMemoryAnalyzer.h:90
Definition ObjectMemoryAnalyzer.h:150
Type
Definition ObjectMemoryAnalyzer.h:152
@ PrintReferences
Definition ObjectMemoryAnalyzer.h:153
@ PrintAll
Definition ObjectMemoryAnalyzer.h:156
@ PrintReferencer
Definition ObjectMemoryAnalyzer.h:154
Definition ObjectMemoryAnalyzer.h:95
Type
Definition ObjectMemoryAnalyzer.h:97
@ InclusiveSize
Definition ObjectMemoryAnalyzer.h:98
@ InclusiveResSize
Definition ObjectMemoryAnalyzer.h:100
@ InclusiveTotal
Definition ObjectMemoryAnalyzer.h:102
@ ExclusiveResSize
Definition ObjectMemoryAnalyzer.h:101
@ ExclusiveTotal
Definition ObjectMemoryAnalyzer.h:103
@ ExclusiveSize
Definition ObjectMemoryAnalyzer.h:99
Definition ObjectMemoryAnalyzer.h:108
ESortKey::Type SortKey
Definition ObjectMemoryAnalyzer.h:129
FCompareFSortBySize(ESortKey::Type InSortKey)
Definition ObjectMemoryAnalyzer.h:109
bool operator()(const FObjectMemoryUsage &A, const FObjectMemoryUsage &B) const
Definition ObjectMemoryAnalyzer.h:113
Definition ObjectMemoryAnalyzer.h:83
COREUOBJECT_API int32 GetResults(TArray< FObjectMemoryUsage > &Results)
Definition ObjectMemoryAnalyzer.cpp:322
COREUOBJECT_API void AnalyzeObject(class UObject *Object)
Definition ObjectMemoryAnalyzer.cpp:43
COREUOBJECT_API void AnalyzeObjects(const TArray< class UObject * > &ObjectList)
Definition ObjectMemoryAnalyzer.cpp:35
COREUOBJECT_API const FObjectMemoryUsage & GetObjectMemoryUsage(class UObject *Obj)
Definition ObjectMemoryAnalyzer.cpp:356
Definition ObjectMemoryAnalyzer.h:21
Type
Definition ObjectMemoryAnalyzer.h:23
@ IsReferencedByNonRoot
Definition ObjectMemoryAnalyzer.h:27
@ IsRoot
Definition ObjectMemoryAnalyzer.h:24
@ IsReferencedByRoot
Definition ObjectMemoryAnalyzer.h:25
@ IsProcessed
Definition ObjectMemoryAnalyzer.h:26
Definition ObjectMemoryAnalyzer.h:19
UE_FORCEINLINE_HINT bool IsReferencedByRoot() const
Definition ObjectMemoryAnalyzer.h:63
uint32 Flags
Definition ObjectMemoryAnalyzer.h:71
UE_FORCEINLINE_HINT bool IsRoot() const
Definition ObjectMemoryAnalyzer.h:62
UE_FORCEINLINE_HINT bool IsProcessed() const
Definition ObjectMemoryAnalyzer.h:64
TArray< UObject * > NonRootReferencer
Definition ObjectMemoryAnalyzer.h:75
UObject * Object
Definition ObjectMemoryAnalyzer.h:73
FObjectMemoryUsage()
Definition ObjectMemoryAnalyzer.h:35
UE_FORCEINLINE_HINT bool IsDefault()
Definition ObjectMemoryAnalyzer.h:57
FObjectMemoryUsage(SIZE_T InclusiveMemUsage, SIZE_T ExclusiveMemUsage, uint32 InFlags=0)
Definition ObjectMemoryAnalyzer.h:46
SIZE_T ExclusiveMemoryUsage
Definition ObjectMemoryAnalyzer.h:68
TArray< UObject * > RootReferencer
Definition ObjectMemoryAnalyzer.h:74
SIZE_T ExclusiveResourceSize
Definition ObjectMemoryAnalyzer.h:70
SIZE_T InclusiveMemoryUsage
Definition ObjectMemoryAnalyzer.h:67
UE_FORCEINLINE_HINT bool IsReferencedByNonRoot() const
Definition ObjectMemoryAnalyzer.h:65
SIZE_T InclusiveResourceSize
Definition ObjectMemoryAnalyzer.h:69