Search Issue Tracker


Fixed in 1.8.1



Found in [Package]


Issue ID




Large amount of memory used in AOT Prebuild

Package: Visual Scripting


When Visual Scripting creates the AOT stubs during a build, it loads every asset in the game to check if the main object inherits from IAotStubbable. This results in huge memory usage in large projects (in our case, it often causes a crash on a PC with 64GB of RAM)
There's a trivial code fix which is that you can check the asset type *without* loading the asset.
In AssetUtility.cs, replace GetAllAssetsOfType<T> with this version:
public static IEnumerable<T> GetAllAssetsOfType<T>()
if (typeof(UnityObject).IsAssignableFrom(typeof(T)))
return AssetDatabase.FindAssets($"t:{typeof(T).Name}")
// GetAllAssetPaths is undocumented and sometimes returns
// paths that are outside the assets folder, hence the where filter.
var result = AssetDatabase.GetAllAssetPaths()
.Where(p => p.StartsWith("Assets"))
.Where(p => typeof(T).IsAssignableFrom(AssetDatabase.GetMainAssetTypeAtPath(p)))
return result;
This both reduces the memory usage, and improves the performance.

  1. Resolution Note (fix version 1.8.1):

    Optimising AOT Prebuild by checking the type of assets without always loading it.

    Fixed in 1.9.0

Comments (1)

  1. PanthenEye

    Jul 05, 2023 17:24

    Can we please get at least one hotfix this year? This was found in 1.7.8, which released more than a year ago.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.