UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MallocReplayProxy.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "HAL/MemoryBase.h"
8#include "HAL/UnrealMemory.h"
10#include "Misc/ScopeLock.h"
11
12class FOutputDevice;
13class UWorld;
15
16#if !defined(UE_USE_MALLOC_REPLAY_PROXY)
17 // it is always enabled on Linux, but not always added to the malloc stack
18 #define UE_USE_MALLOC_REPLAY_PROXY (PLATFORM_UNIX && !UE_BUILD_SHIPPING)
19#endif // !defined(UE_USE_MALLOC_REPLAY_PROXY)
20
21#if UE_USE_MALLOC_REPLAY_PROXY
22
27class FMallocReplayProxy : public FMalloc
28{
29private:
31 FMalloc* UsedMalloc;
32
33private:
34
35 enum
36 {
37 HistoryCacheSize = 16384
38 };
39
41 struct FHistoryEntry
42 {
44 const char* Operation;
46 void * PointerOut;
48 void * PointerIn;
52 uint32 Alignment;
53 };
54
56 FHistoryEntry HistoryCache[HistoryCacheSize];
57
60
63
65 FCriticalSection HistoryLock;
66
69
71 void AddToHistory(const char *Op, void * PtrOut, void * PtrIn, SIZE_T Size, SIZE_T Alignment)
72 {
73 FScopeLock Lock(&HistoryLock);
74
75 HistoryCache[CurrentCacheIdx].Operation = Op;
79 HistoryCache[CurrentCacheIdx].Alignment = Alignment;
80
83 {
85 }
86 }
87
89 void DumpHistoryToDisk();
90
91public:
92 // FMalloc interface begin
94
95 virtual ~FMallocReplayProxy();
96
97 virtual void InitializeStatsMetadata() override;
98
99 virtual void* Malloc(SIZE_T Size, uint32 Alignment) override;
100
101 virtual void* Realloc(void* Ptr, SIZE_T NewSize, uint32 Alignment) override;
102
103 virtual void Free(void* Ptr) override;
104
105 virtual SIZE_T QuantizeSize(SIZE_T Count, uint32 Alignment) override;
106
107 virtual void UpdateStats() override;
108
109 virtual void GetAllocatorStats(FGenericMemoryStats& out_Stats) override;
110
111 virtual void DumpAllocatorStats(class FOutputDevice& Ar) override;
112
113 virtual bool IsInternallyThreadSafe() const override;
114
115 virtual bool ValidateHeap() override;
116
117 virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override;
118
119 virtual bool GetAllocationSize(void *Original, SIZE_T &SizeOut) override;
120
121 virtual const TCHAR* GetDescriptiveName() override;
122
123 virtual void Trim(bool bTrimThreadCaches) override;
124
125 virtual void SetupTLSCachesOnCurrentThread() override;
126
127 virtual void ClearAndDisableTLSCachesOnCurrentThread() override;
128
129 // FMalloc interface end
130
131 // called by destructor or otherwise, idempotent
132 void CloseHistory();
133};
134
135#endif // UE_USE_MALLOC_REPLAY_PROXY
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
virtual CORE_API bool Exec(UWorld *InWorld, const TCHAR *Cmd, FOutputDevice &Ar)
Definition Exec.cpp:30
Definition MemoryBase.h:99
virtual const TCHAR * GetDescriptiveName()
Definition MemoryBase.h:248
virtual bool GetAllocationSize(void *Original, SIZE_T &SizeOut)
Definition MemoryBase.h:158
virtual void * Malloc(SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)=0
virtual bool ValidateHeap()
Definition MemoryBase.h:238
virtual void SetupTLSCachesOnCurrentThread()
Definition MemoryBase.h:173
virtual bool IsInternallyThreadSafe() const
Definition MemoryBase.h:230
virtual void DumpAllocatorStats(class FOutputDevice &Ar)
Definition MemoryBase.h:221
virtual CORE_API void GetAllocatorStats(FGenericMemoryStats &out_Stats)
Definition MemoryBase.cpp:85
virtual void Trim(bool bTrimThreadCaches)
Definition MemoryBase.h:166
virtual CORE_API void InitializeStatsMetadata()
Definition MemoryBase.cpp:61
virtual void * Realloc(void *Original, SIZE_T Count, uint32 Alignment=DEFAULT_ALIGNMENT)=0
virtual CORE_API void UpdateStats()
Definition MemoryBase.cpp:72
virtual void ClearAndDisableTLSCachesOnCurrentThread()
Definition MemoryBase.h:194
virtual SIZE_T QuantizeSize(SIZE_T Count, uint32 Alignment)
Definition MemoryBase.h:146
Definition OutputDevice.h:133
Definition ScopeLock.h:141
Definition World.h:918
Definition MemoryMisc.h:21