zoukankan      html  css  js  c++  java
  • U3D MemoryProfiler

    MemoryProfiler

    Unity 5.3a4 has a new very lowlevel memory profiler API. It can tell you which objects got blamed for how much C++ memory allocations. On IL2CPP and Mono .NET 3.5 platforms, it will also give you a dump of the entire C# heap, as well as C# type descriptions.

    This API is too low level for most people to benefit from. The intention is to write a much nicer UI window ontop of this API that will actually be readily useful for many users, in helping them figure out which objects are loaded, which objects take a lot of memory, and most important, why that object is in memory. This repository is that nicer UI window, very much in progress of being built.

    A common pattern of "memory leaks" that we see, is if you have a C# class with a static field, that contains a list, that has an object, which has a reference to a big Texture2D. This Texture2D will never be unloaded, because it is still reachable from C#. Figuring out this is the case is not very straightforward. This new memory profiler window will make it straight forward, and if you select the big Texture2D, it will show you a backtrace of references, all the way to the static C# field, (including the classname) that is causing this Texture2D to be loaded.

    We have taken the, for us new, approach of shipping the low level API in the Unity product itself, and already opensourcing this memory profiler window long before it is "ready enough to be included in unity proper". We'll develop this window as an opensource project. Contributions are welcomed. At some point we'll feel that the feature is "good enough", at which point we'll most likely ship it out of the box with Unity.

    Today, the UI part of this feature is still very rough. We decided to opensource it anyway, as when your project is in a state of "we need to use less memory, what do we do now", you probably care alot more about finding your memory leaks today, then finding them 6 months from now with nicer buttons and user experience.

    Usage:

    • Make sure you're running Unity 5.3a4 or later for IL2CPP support.
    • Make sure you're running Unity 2017.3.0b1 or later for Mono .NET 3.5 support.
    • Build an il2cpp project & run it (any il2cpp platform should be fine).
    • Open the user project in this repository.
    • Open the normal profiler window.
    • Connect it to the player as you would normally profile.
    • Open the memory profiler window (Window->MemoryProfilerWindow)
    • Click "SnapShot".

  • 相关阅读:
    申通服务恶劣,开始忘本
    基础知识学习外部排序
    ToString()格式和用法大全
    Web.Config Transformation ASP.NET 4.0 新特性
    拒绝try.catch泛滥,学习委托有感
    Oracle Job定时任务的使用详解
    数据库和索引设计简要笔记
    Redis实际应用场景
    线程如何按照自己指定的顺序执行
    WCF 4.0 进阶系列 随笔汇总
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9629666.html
Copyright © 2011-2022 走看看