美文网首页
unity3d profiler

unity3d profiler

作者: 诸子百家谁的天下 | 来源:发表于2019-12-03 21:38 被阅读0次

    Profiler

    内存

    1. Profiler 中看到的内存是通过 unity 自身引擎看到的内存分配,凡是引擎创建和销毁的内存,引擎有记录,可以给出准确的引用内存占用信息.
    2. 第三方库的内存分配无法进行统计,以及一些其他的内存分配是无法进行统计的.
    3. 在真实环境上面,(例如移动设备上面,Xcode的 instrument,Android 的 USS)内存都比 profiler 上要多,因为这些内存包括 2 部分,A:真实的 used 的物理内存,B:缓存的(cached)的物理内存,这是不同平台决定的.Android 和 iOS 系统在资源不使用的时候均不会立即将其进行回收,而是将其放在缓存的物理内存中,一遍下次再使用时,可以快速的加载.
    4. 当系统发现 APP 的内存不够用时,才会在底层调用一个 memory killer 线程来轮询缓存物理内存,为 APP 清理内存.
    5. unity 的 profiler 只记录目前真实使用的物理内存,即上述所说的 A 部分内存.
    6. System.ExecutableAndDlls该项在 profiler 里面占用很多,该项显示的是执行文件和所调用的库(物理,渲染,IO 等系统库)的总和.即无需关心此项.
    7. Used total 的计算公式为: Used total = Unity + Mono + GfxDriver + Profiler + additionalUsedMemory.
      additionalUsedMemory在profiler 中没有显示,因为在大多数平台下都为 0(PC/Android/iOS 都为 0),一般情况下 Used Total 的值就是除 FMOD 之外各项的总和了.Reserved Total 同样适用的.
    8. PersistentManager.Remapper 主要提供文件的持久化存储,包括各种序列化的 asset,项目的 setting 文件,维护文件系统中的文件与内存中数据的对应关系.如果项目中大量适用 AssetBundle ,在对 AsserBundle 进行 Unload 之前都会需要占用 Remapper 的内存的,而 Remapper 本身的实现适用内存池,其数值只会增大,那么为了使 Remapper 占用的内存保持稳定,则在加载一定数量的 AssetBundle 之后需要进行 Unload 操作,而不要一次性把所有的 AssetBundle 进行 Unload.(这样的操作对维持整个 mono heap 的大小也是重要的,mono heap 本身也是只增大不减小的)

    相关文章

      网友评论

          本文标题:unity3d profiler

          本文链接:https://www.haomeiwen.com/subject/iqphgctx.html