博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity-WIKI 之 AllocationStats(内存分配)
阅读量:6691 次
发布时间:2019-06-25

本文共 3797 字,大约阅读时间需要 12 分钟。

组件功能

allocationstats是一个简单的辅助工具,用于显示您的应用程序分配多少内存。它采用GC.GetTotalMemory来跟踪内存使用

 

使用方法

添加 Allocmem.cs 到场景中的任何GameObject。当你按下播放按钮,会显示一个小窗口包含以下信息。

Currently allocated(当前分配):显示GC分配的总内存

Peak allocated(峰值):显示了内存分配,()内的值是GC最后一次应用程序运行期间分配的最大内存

Allocation rate(分配率):显示了应用程序分配内存(以mb为单位),比如 0.3秒MB内存分配,在这个时候我应该修复。

Allocation rate(收集次数/频率):显示相距多远GC的集合间隔(秒)

Last collect delta(最后收集):显示帧率有多高,当GC上次调用,调用GC通常使帧率下降。

 

AllocMem.cs

using UnityEngine;using System.Collections;using System.Text;[ExecuteInEditMode()]使这个脚本在编辑模式下运行public class AllocMem : MonoBehaviour{    public bool show = true;    public bool showFPS = false;    public bool showInEditor = false;    public void Start()    {        useGUILayout = false;    }    // Use this for initialization    public void OnGUI()    {        if (!show || (!Application.isPlaying && !showInEditor))        {            return;        }        int collCount = System.GC.CollectionCount(0);        if (lastCollectNum != collCount)        {            lastCollectNum = collCount;            delta = Time.realtimeSinceStartup - lastCollect;            lastCollect = Time.realtimeSinceStartup;            lastDeltaTime = Time.deltaTime;            collectAlloc = allocMem;        }        allocMem = (int)System.GC.GetTotalMemory(false);        peakAlloc = allocMem > peakAlloc ? allocMem : peakAlloc;        if (Time.realtimeSinceStartup - lastAllocSet > 0.3F)        {            int diff = allocMem - lastAllocMemory;            lastAllocMemory = allocMem;            lastAllocSet = Time.realtimeSinceStartup;            if (diff >= 0)            {                allocRate = diff;            }        }        StringBuilder text = new StringBuilder();        text.Append("Currently allocated            ");        text.Append((allocMem / 1000000F).ToString("0"));        text.Append("mb\n");        text.Append("Peak allocated                ");        text.Append((peakAlloc / 1000000F).ToString("0"));        text.Append("mb (last    collect ");        text.Append((collectAlloc / 1000000F).ToString("0"));        text.Append(" mb)\n");        text.Append("Allocation rate                ");        text.Append((allocRate / 1000000F).ToString("0.0"));        text.Append("mb\n");        text.Append("Collection frequency        ");        text.Append(delta.ToString("0.00"));        text.Append("s\n");        text.Append("Last collect delta            ");        text.Append(lastDeltaTime.ToString("0.000"));        text.Append("s (");        text.Append((1F / lastDeltaTime).ToString("0.0"));        text.Append(" fps)");        if (showFPS)        {            text.Append("\n" + (1F / Time.deltaTime).ToString("0.0") + " fps");        }        GUI.Box(new Rect(5, 5, 310, 80 + (showFPS ? 16 : 0)), "");        GUI.Label(new Rect(10, 5, 1000, 200), text.ToString());        /*GUI.Label (new Rect (5,5,1000,200),            "Currently allocated            "+(allocMem/1000000F).ToString ("0")+"mb\n"+            "Peak allocated                "+(peakAlloc/1000000F).ToString ("0")+"mb "+            ("(last    collect"+(collectAlloc/1000000F).ToString ("0")+" mb)" : "")+"\n"+            "Allocation rate                "+(allocRate/1000000F).ToString ("0.0")+"mb\n"+            "Collection space            "+delta.ToString ("0.00")+"s\n"+            "Last collect delta            "+lastDeltaTime.ToString ("0.000") + " ("+(1F/lastDeltaTime).ToString ("0.0")+")");*/    }    private float lastCollect = 0;    private float lastCollectNum = 0;    private float delta = 0;    private float lastDeltaTime = 0;    private int allocRate = 0;    private int lastAllocMemory = 0;    private float lastAllocSet = -9999;    private int allocMem = 0;    private int collectAlloc = 0;    private int peakAlloc = 0;}

WIKI地址

转载于:https://www.cnblogs.com/zhaoqingqing/p/3648902.html

你可能感兴趣的文章
BOS中常用方法和类
查看>>
append的问题
查看>>
git &github 快速入门
查看>>
JS中的几种函数
查看>>
ios--编码规范
查看>>
JsCV Core v0.2发布 & Javascript图像处理系列目录
查看>>
bzoj 2784 [JLOI2012]时间流逝——树上高斯消元
查看>>
OD调试2---TraceMe
查看>>
Linux C single linked for any data type
查看>>
SQL优化三板斧:精简之道、驱动为王、集合为本
查看>>
MVC中实现部分内容异步加载
查看>>
PTA编程总结2:
查看>>
剑指OFFER——顺时针打印矩阵
查看>>
Live Archive 3490 - Generator 概率
查看>>
洛谷 1417 烹调方案
查看>>
Oracle SQL Developer
查看>>
dede的使用-2
查看>>
C++银行储蓄程序代码
查看>>
Java 线程池框架核心代码分析
查看>>
第六次作业:素数判断及求和
查看>>