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.各種例子測試