我有一个MonoTouch应用程序在野外有时会死于mprotect errno 12 (out of memory),并且它似乎总是事先得到至少一个 ReceiveMemoryWarning 通知。
我想知道回应这个问题的正确方法是什么。我的应用程序可以释放两种类型的东西:OpenGL纹理和托管内存。
我对此的疑问是:
OpenGL纹理:删除OpenGL纹理会有帮助吗?
托管内存:我无法直接释放它,但我可以将其引用为null。这够了吗?
GC.Collect:我应该在处理程序的末尾调用GC.Collect()吗? GC.Collect会立即执行任何操作,还是为将来安排收集?
我可以/应该做些什么来回应这个?
答案 0 :(得分:1)
我在使用OpenGL的应用程序中遇到了一段时间。对我来说,这确实是内存泄漏。
[的DllImport( “/系统/库/框架/ CoreGraphics.framework / CoreGraphics中”)] public static extern void CGDataProviderRelease(IntPtr provider);
和你打电话后 GL.TexImage2D .....你需要调用CGDataProviderRelease(data.Handle);
现在要说,你可能想看看这个: