Xamarin中没有金属质感释放

时间:2017-08-09 09:57:04

标签: ios xamarin xamarin.ios metalkit

此文本经过长时间调查和双重检查后编辑。

我正在Xamarin开发基于Metal API的企业(而不是游戏)应用程序,我有一个关键问题:金属纹理在处置后不会释放它的内存,导致什么广泛的内存泄漏和应用程序崩溃。

class SomeClass
{
    public void CreateTexture()
    {
        var metalTexture = device.CreateTexture(textureDescriptor);
        metalTexture.Dispose();
    }
}

上面你可以看到一个简化的样本,它展示了这个问题。 在Dispose()调用之后,即使纹理是局部变量,纹理的内存也不会释放。

有人可以解释发生了什么,以及如何释放纹理的记忆?

由于这个问题,看起来Xamarin中的Metal Kit支持完全被破坏和无用。而且我深感震惊:WTF还在继续?! Xamarin团队如何才能最初破解功能并且多年来不解决这个问题?伙计们,你在那做什么? Xamarin论坛完全死了。目前,这个自豪地被称为" Visual Studio for Mac",但重点是什么?该死的代码片段仍然是错误的 - 必须删除自动插入的括号来修复光标。

P.S。
以下是该项目的回购展示了问题:
https://github.com/kav-git/Xamarin-Metal-Issue

  1. 在调试期间,内存使用情况会记录到IDE的“输出”窗口中。
  2. Add texture按钮将新的64Mb纹理添加到集合中。
  3. Dispose textures按钮清除所有纹理。不会释放任何记忆。
  4. 按下Release pixelData按钮,确保处理非纹理对象时GC正常。
  5. 使用GC.Collect()按钮只是为了好玩。

0 个答案:

没有答案