UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AsyncLoading.cpp File Reference
#include "Serialization/AsyncLoading.h"
#include "HAL/PlatformFileManager.h"
#include "HAL/FileManager.h"
#include "HAL/Event.h"
#include "HAL/RunnableThread.h"
#include "Misc/PackageSegment.h"
#include "Misc/ScopeExit.h"
#include "Misc/ScopeLock.h"
#include "Stats/StatsMisc.h"
#include "Misc/CoreStats.h"
#include "HAL/IConsoleManager.h"
#include "Logging/StructuredLog.h"
#include "Misc/CoreDelegates.h"
#include "Misc/CommandLine.h"
#include "Misc/App.h"
#include "Misc/MessageDialog.h"
#include "Misc/PackageAccessTrackingOps.h"
#include "Misc/PackageName.h"
#include "Misc/ScopedSlowTask.h"
#include "Misc/TrackedActivity.h"
#include "UObject/PackageFileSummary.h"
#include "UObject/Linker.h"
#include "UObject/CoreRedirects.h"
#include "UObject/SoftObjectPath.h"
#include "UObject/LinkerLoad.h"
#include "UObject/LinkerLoadImportBehavior.h"
#include "UObject/PackageResourceManager.h"
#include "Serialization/DeferredMessageLog.h"
#include "UObject/UObjectThreadContext.h"
#include "UObject/ObjectSerializeAccessScope.h"
#include "UObject/LinkerManager.h"
#include "Misc/Paths.h"
#include "Misc/PlayInEditorLoadingScope.h"
#include "Serialization/AsyncLoadingThread.h"
#include "Misc/ExclusiveLoadPackageTimeTracker.h"
#include "ProfilingDebugging/CookStats.h"
#include "ProfilingDebugging/LoadTimeTracker.h"
#include "HAL/ThreadHeartBeat.h"
#include "HAL/ExceptionHandling.h"
#include "Templates/GuardValueAccessors.h"
#include "Serialization/AsyncLoadingPrivate.h"
#include "UObject/UObjectHash.h"
#include "Templates/UniquePtr.h"
#include "Serialization/BufferReader.h"
#include "Async/TaskGraphInterfaces.h"
#include "Blueprint/BlueprintSupport.h"
#include "HAL/LowLevelMemTracker.h"
#include "HAL/LowLevelMemStats.h"
#include "HAL/IPlatformFileOpenLogWrapper.h"
#include "ProfilingDebugging/CsvProfiler.h"
#include "ProfilingDebugging/AssetMetadataTrace.h"
#include "UObject/GarbageCollectionInternal.h"
#include "ProfilingDebugging/MiscTrace.h"
#include "Serialization/LoadTimeTracePrivate.h"
#include "Misc/PathViews.h"

Classes

struct  FEDLBootObjectState
 
struct  FEDLBootWaitingPackage
 
struct  FEDLBootNotificationManager
 
struct  FAsyncPackageScope
 
struct  FAsyncLoadingTickScope
 
struct  FPrecacheCallbackHandler
 
struct  FScopedAddObjectreference
 
struct  FScopedRecursionNotAllowed
 

Macros

#define FIND_MEMORY_STOMPS   (1 && (PLATFORM_WINDOWS || PLATFORM_UNIX) && !WITH_EDITORONLY_DATA)
 
#define TRACK_SERIALIZE   (0)
 
#define MIN_REMAIN_TIME   (0.00101f)
 
#define MAX_EXPORT_PRECACHE_BLOCK   (1024*1024)
 
#define MAX_EXPORT_COUNT_PRECACHE   (20)
 
#define MAX_EXPORT_ALLOWED_SKIP   (48*1024)
 
#define USE_DETAILED_FASYNCARCHIVE_MEMORY_TRACKING   0
 

Functions

 DEFINE_LOG_CATEGORY (LogLoadingDev)
 
 CSV_DECLARE_CATEGORY_MODULE_EXTERN (CORE_API, Basic)
 
 CSV_DECLARE_CATEGORY_MODULE_EXTERN (CORE_API, FileIO)
 
 DECLARE_MEMORY_STAT (TEXT("Streaming Memory Used"), STAT_StreamingAllocSize, STATGROUP_Memory)
 
 DECLARE_CYCLE_STAT (TEXT("Tick AsyncPackage"), STAT_FAsyncPackage_Tick, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("CreateLinker AsyncPackage"), STAT_FAsyncPackage_CreateLinker, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("FinishLinker AsyncPackage"), STAT_FAsyncPackage_FinishLinker, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("LoadImports AsyncPackage"), STAT_FAsyncPackage_LoadImports, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("CreateImports AsyncPackage"), STAT_FAsyncPackage_CreateImports, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("CreateMetaData AsyncPackage"), STAT_FAsyncPackage_CreateMetaData, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("CreateExports AsyncPackage"), STAT_FAsyncPackage_CreateExports, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("FreeReferencedImports AsyncPackage"), STAT_FAsyncPackage_FreeReferencedImports, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("Precache AsyncArchive"), STAT_FAsyncArchive_Precache, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("PreLoadObjects AsyncPackage"), STAT_FAsyncPackage_PreLoadObjects, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("ExternalReadDependencies AsyncPackage"), STAT_FAsyncPackage_ExternalReadDependencies, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("PostLoadObjects AsyncPackage"), STAT_FAsyncPackage_PostLoadObjects, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("FinishObjects AsyncPackage"), STAT_FAsyncPackage_FinishObjects, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("CreateAsyncPackagesFromQueue"), STAT_FAsyncPackage_CreateAsyncPackagesFromQueue, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("ProcessAsyncLoading AsyncLoadingThread"), STAT_FAsyncLoadingThread_ProcessAsyncLoading, STATGROUP_AsyncLoad)
 
 DECLARE_CYCLE_STAT (TEXT("Async Loading Time Detailed"), STAT_AsyncLoadingTimeDetailed, STATGROUP_AsyncLoad)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT (TEXT("Total PostLoadObjects time GT"), STAT_FAsyncPackage_TotalPostLoadGameThread, STATGROUP_AsyncLoadGameThread)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT (TEXT("Async loading block time"), STAT_AsyncIO_AsyncLoadingBlockingTime, STATGROUP_AsyncIO)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT (TEXT("Async package precache wait time"), STAT_AsyncIO_AsyncPackagePrecacheWaitTime, STATGROUP_AsyncIO)
 
 LLM_DEFINE_TAG (UObject_FAsyncPackage)
 
bool IsGarbageCollectionLocked ()
 
EAsyncIOPriorityAndFlags GetAsyncIOPriority ()
 
EAsyncIOPriorityAndFlags GetAsyncIOPrecachePriorityAndFlags ()
 
 DEFINE_LOG_CATEGORY_STATIC (LogAsyncArchive, Display, All)
 
 DECLARE_MEMORY_STAT (TEXT("FAsyncArchive Buffers"), STAT_FAsyncArchiveMem, STATGROUP_Memory)
 
void CreateClustersFromPackage (FLinkerLoad *PackageLinker, TArray< UObject * > &OutClusterObjects)
 
bool IsEventDrivenLoaderEnabled ()
 

Variables

int32 GMaxReadyRequestsToStallMB = 30
 
int32 GMaxPrecacheRequestsInFlight = 2
 
int32 GMaxIncomingRequestsToStall = 100
 
int32 GProcessPrestreamingRequests = 0
 
int32 GEditorLoadPrecacheSizeKB = 0
 
int32 GAsyncLoadingPrecachePriority = (int32)AIOP_MIN
 
int32 GRandomizeLoadOrder = 0
 
int32 GCurrentExportIndex = -1
 

Macro Definition Documentation

◆ FIND_MEMORY_STOMPS

#define FIND_MEMORY_STOMPS   (1 && (PLATFORM_WINDOWS || PLATFORM_UNIX) && !WITH_EDITORONLY_DATA)

◆ MAX_EXPORT_ALLOWED_SKIP

#define MAX_EXPORT_ALLOWED_SKIP   (48*1024)

◆ MAX_EXPORT_COUNT_PRECACHE

#define MAX_EXPORT_COUNT_PRECACHE   (20)

◆ MAX_EXPORT_PRECACHE_BLOCK

#define MAX_EXPORT_PRECACHE_BLOCK   (1024*1024)

◆ MIN_REMAIN_TIME

#define MIN_REMAIN_TIME   (0.00101f)

◆ TRACK_SERIALIZE

#define TRACK_SERIALIZE   (0)

◆ USE_DETAILED_FASYNCARCHIVE_MEMORY_TRACKING

#define USE_DETAILED_FASYNCARCHIVE_MEMORY_TRACKING   0

Function Documentation

◆ CreateClustersFromPackage()

void CreateClustersFromPackage ( FLinkerLoad PackageLinker,
TArray< UObject * > &  OutClusterObjects 
)

Looks through objects loaded with a package and creates clusters from them

◆ CSV_DECLARE_CATEGORY_MODULE_EXTERN() [1/2]

CSV_DECLARE_CATEGORY_MODULE_EXTERN ( CORE_API  ,
Basic   
)

◆ CSV_DECLARE_CATEGORY_MODULE_EXTERN() [2/2]

CSV_DECLARE_CATEGORY_MODULE_EXTERN ( CORE_API  ,
FileIO   
)

◆ DECLARE_CYCLE_STAT() [1/16]

DECLARE_CYCLE_STAT ( TEXT("Async Loading Time Detailed" ,
STAT_AsyncLoadingTimeDetailed  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [2/16]

DECLARE_CYCLE_STAT ( TEXT("CreateAsyncPackagesFromQueue")  ,
STAT_FAsyncPackage_CreateAsyncPackagesFromQueue  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [3/16]

DECLARE_CYCLE_STAT ( TEXT("CreateExports AsyncPackage" ,
STAT_FAsyncPackage_CreateExports  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [4/16]

DECLARE_CYCLE_STAT ( TEXT("CreateImports AsyncPackage" ,
STAT_FAsyncPackage_CreateImports  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [5/16]

DECLARE_CYCLE_STAT ( TEXT("CreateLinker AsyncPackage" ,
STAT_FAsyncPackage_CreateLinker  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [6/16]

DECLARE_CYCLE_STAT ( TEXT("CreateMetaData AsyncPackage" ,
STAT_FAsyncPackage_CreateMetaData  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [7/16]

DECLARE_CYCLE_STAT ( TEXT("ExternalReadDependencies AsyncPackage" ,
STAT_FAsyncPackage_ExternalReadDependencies  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [8/16]

DECLARE_CYCLE_STAT ( TEXT("FinishLinker AsyncPackage" ,
STAT_FAsyncPackage_FinishLinker  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [9/16]

DECLARE_CYCLE_STAT ( TEXT("FinishObjects AsyncPackage" ,
STAT_FAsyncPackage_FinishObjects  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [10/16]

DECLARE_CYCLE_STAT ( TEXT("FreeReferencedImports AsyncPackage" ,
STAT_FAsyncPackage_FreeReferencedImports  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [11/16]

DECLARE_CYCLE_STAT ( TEXT("LoadImports AsyncPackage" ,
STAT_FAsyncPackage_LoadImports  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [12/16]

DECLARE_CYCLE_STAT ( TEXT("PostLoadObjects AsyncPackage" ,
STAT_FAsyncPackage_PostLoadObjects  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [13/16]

DECLARE_CYCLE_STAT ( TEXT("Precache AsyncArchive" ,
STAT_FAsyncArchive_Precache  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [14/16]

DECLARE_CYCLE_STAT ( TEXT("PreLoadObjects AsyncPackage" ,
STAT_FAsyncPackage_PreLoadObjects  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [15/16]

DECLARE_CYCLE_STAT ( TEXT("ProcessAsyncLoading AsyncLoadingThread" ,
STAT_FAsyncLoadingThread_ProcessAsyncLoading  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_CYCLE_STAT() [16/16]

DECLARE_CYCLE_STAT ( TEXT("Tick AsyncPackage" ,
STAT_FAsyncPackage_Tick  ,
STATGROUP_AsyncLoad   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT() [1/3]

DECLARE_FLOAT_ACCUMULATOR_STAT ( TEXT("Async loading block time" ,
STAT_AsyncIO_AsyncLoadingBlockingTime  ,
STATGROUP_AsyncIO   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT() [2/3]

DECLARE_FLOAT_ACCUMULATOR_STAT ( TEXT("Async package precache wait time" ,
STAT_AsyncIO_AsyncPackagePrecacheWaitTime  ,
STATGROUP_AsyncIO   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT() [3/3]

DECLARE_FLOAT_ACCUMULATOR_STAT ( TEXT("Total PostLoadObjects time GT" ,
STAT_FAsyncPackage_TotalPostLoadGameThread  ,
STATGROUP_AsyncLoadGameThread   
)

◆ DECLARE_MEMORY_STAT() [1/2]

DECLARE_MEMORY_STAT ( TEXT("FAsyncArchive Buffers" ,
STAT_FAsyncArchiveMem  ,
STATGROUP_Memory   
)

◆ DECLARE_MEMORY_STAT() [2/2]

DECLARE_MEMORY_STAT ( TEXT("Streaming Memory Used" ,
STAT_StreamingAllocSize  ,
STATGROUP_Memory   
)

◆ DEFINE_LOG_CATEGORY()

DEFINE_LOG_CATEGORY ( LogLoadingDev  )

◆ DEFINE_LOG_CATEGORY_STATIC()

DEFINE_LOG_CATEGORY_STATIC ( LogAsyncArchive  ,
Display  ,
All   
)

◆ GetAsyncIOPrecachePriorityAndFlags()

EAsyncIOPriorityAndFlags GetAsyncIOPrecachePriorityAndFlags ( )

◆ GetAsyncIOPriority()

EAsyncIOPriorityAndFlags GetAsyncIOPriority ( )

◆ IsEventDrivenLoaderEnabled()

bool IsEventDrivenLoaderEnabled ( )

Returns true if the event driven loader is enabled in the current build

◆ IsGarbageCollectionLocked()

bool IsGarbageCollectionLocked ( )

Returns true if we're inside a FGCScopeGuard

◆ LLM_DEFINE_TAG()

LLM_DEFINE_TAG ( UObject_FAsyncPackage  )

Variable Documentation

◆ GAsyncLoadingPrecachePriority

int32 GAsyncLoadingPrecachePriority = (int32)AIOP_MIN

◆ GCurrentExportIndex

int32 GCurrentExportIndex = -1

◆ GEditorLoadPrecacheSizeKB

int32 GEditorLoadPrecacheSizeKB = 0

◆ GMaxIncomingRequestsToStall

int32 GMaxIncomingRequestsToStall = 100

◆ GMaxPrecacheRequestsInFlight

int32 GMaxPrecacheRequestsInFlight = 2

◆ GMaxReadyRequestsToStallMB

int32 GMaxReadyRequestsToStallMB = 30

◆ GProcessPrestreamingRequests

int32 GProcessPrestreamingRequests = 0

◆ GRandomizeLoadOrder

int32 GRandomizeLoadOrder = 0