目录
1.Instantiate的对象,需要三部曲:①Destroy②Resources.UnloadUnusedAssets③GC.Collect()
四.操作:1:成功:在合适的地方调用Resources.UnloadUnusedAssets,释放已经没有引用的Asset.
2.代码: Resources.UnloadUnusedAssets();
四.操作:2:成功:如果需要立即释放内存加上GC.Collect(),否则内存未必会立即被释放,有时候可能导致内存占用过多而引发异常
2.运行效果:成功:可以让内存不在增加那么多,属于正常的增加
一.目的
1.如何解决:内存不断增加的问题
二.参考
1. Unity3D内存释放 (很详细的)
Unity3D内存释放 (很详细的) - silent-bobo - 博客园
- good:值得参考
三.注意
1.Instantiate的对象,需要三部曲:①Destroy②Resources.UnloadUnusedAssets③GC.Collect()
- 如果有Instantiate的对象,用Destroy进行销毁
- 在合适的地方调用Resources.UnloadUnusedAssets,释放已经没有引用的Asset.
- 如果需要立即释放内存加上GC.Collect(),否则内存未必会立即被释放,有时候可能导致内存占用过多而引发异常。这样可以保证内存始终被及时释放,占用量最少。也不需要对每个加载的对象进行引用。
四.操作:1:成功:在合适的地方调用Resources.UnloadUnusedAssets,释放已经没有引用的Asset.
1.猜测是 Destroy时候不干净
2.代码: Resources.UnloadUnusedAssets();
Resources.UnloadUnusedAssets();
3.运行效果:不断点击时候,明显内存没有增加那么夸张了
四.操作:2:成功:如果需要立即释放内存加上GC.Collect(),否则内存未必会立即被释放,有时候可能导致内存占用过多而引发异常
1. 代码:执行三部曲
Destroy(arr_obj_RawImage_roll_leaveWordEnjoy[i].gameObject);
Resources.UnloadUnusedAssets();
System.GC.Collect();