分享Unity的Profiler分析和解决GC.MarkDependencies
Posted avi9111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享Unity的Profiler分析和解决GC.MarkDependencies相关的知识,希望对你有一定的参考价值。
Unity和C#的GC问题
其实对于一些处理,特别容易产生小GC,积小成多也是一个大问题,例如:
- 多线程处理
- Update()
- Loop Set Data
我的问题也很明显,只要勾选了输出log(view) 显示处理,则必然出现如下峰值图形(红色放行框),没勾选的前半部分图形并不会有问题,相对平滑
Unity的Profiler也挺好的,有高亮提示
关于 GC.MarkDependencies,可参考:
【酷熊科技】工作积累 ----------- 内存优化之GC.MarkDependencies_weixin_33788244的博客-CSDN博客
一些装箱,拆箱的处理
这里有2~n个问题,其实也没搞懂
- 做过c++的同学,可能知道String.memcpy是字串复制,但我也没搞懂这段代码哪里用到string
- gc alloc也是没搞懂
protected UIVertex[] SetVbo(Vector2[] vertices, Vector2[] uvs)
UIVertex[] vbo = new UIVertex[4];
for (int i = 0; i < vertices.Length; i++)
var vert = UIVertex.simpleVert;
//vert.color = color;
vert.position = vertices[i];
//vert.uv0 = uvs[i];
vbo[i] = vert;
return vbo;
一个【RPC】(远程命令)处理
未完成。。。。待补充
1.解決[cammand],避免依賴ILProcess
2.高層保持(hight level),換 底層通訊+protobuf
3.各種例子測試
以上是关于分享Unity的Profiler分析和解决GC.MarkDependencies的主要内容,如果未能解决你的问题,请参考以下文章