Version: 2021.3

Profiler.GetMonoUsedSizeLong

切换到手册
public static long GetMonoUsedSizeLong ();

返回

long Returns a long integer value of the memory in use.

描述

Gets the allocated managed memory for live objects and non-collected objects.

This function returns the amount of allocated managed-memory for all objects, both live and non-collected. Always call GC.Collect before calling this function, because non-referenced objects still take up space until the garbage collector (GC) collects them. This returns an ever-increasing value until GC.Collect is called.

The size of Profiler.GetMonoHeapSizeLong might decrease after a subsequent GC.Collect is called, if the first GC.Collect call collected all remaining objects in a heap section. Allocating new memory might also implicitly re-trigger GC.Collect and if it finds more objects that are ready to be collected since the first call, it might lower the value that Profiler.GetMonoUsedSizeLong returns even further. Also, Unity might allocate managed memory on threads, or threaded code might get rid of pointers to managed allocations, so while it might look like no code should have changed the amount of managed allocations between two points of measurements, that is not necessarily the case.

using UnityEngine;
using System.Collections;
using UnityEngine.Profiling;

class GetMonoExample : MonoBehaviour { void Update() { System.GC.Collect(); if (UnityEngine.Scripting.GarbageCollector.isIncremental) { Debug.Log("Mono used size" + Profiler.GetMonoUsedSizeLong() + "Bytes, GC.Collect not yet finished"); } else { System.GC.WaitForPendingFinalizers(); Debug.Log("Mono used size" + Profiler.GetMonoUsedSizeLong() + "Bytes"); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961