内存使用量的增长似乎与Metal对象有关

时间:2017-01-13 14:48:39

标签: swift metal

我目前正在构建一个使用Metal来有效渲染三角形并评估纹理上的适应度函数的应用程序,我注意到我的Metal应用程序的内存使用量正在增长,我无法理解为什么< / strong>即可。

首先,我很惊讶地看到处于调试模式,根据Xcode调试面板,内存使用量增长非常慢(200个生成图像后大约20 MB) ,而在发布时增长得更快(200个生成图像后大约100 MB) 我不会存储生成的图像(至少不是故意的......但也许有一些我不知道的泄漏)。

我试图了解泄漏(如果有的话)来自哪里,但我真的不知道从哪里开始,我采用了GPU帧捕获来查看Metal使用的对象,这对我来说似乎很可疑:
enter image description here

看起来有数千个对象(列表比你在左侧面板上看到的要长)。

每次我绘制图像时,我都会调用此代码:

trianglesVerticesCoordiantes = device.makeBuffer(bytes: &positions, length:  bufferSize , options: MTLResourceOptions.storageModeManaged)
triangleVerticiesColors = device.makeBuffer(bytes: &colors, length: bufferSize, options: MTLResourceOptions.storageModeManaged)

我肯定会让它一次性分配,然后在需要时简单地将数据复制到此缓冲区中,但它是否会导致内存泄漏或者根本没有?

使用乐器屏幕截图编辑:
enter image description here

编辑#2:使用Inspector时存在大量命令编码器对象: enter image description here

编辑#3:在分析哪个Xcode可视化调试器时,这里似乎是最可疑的内存图:
enter image description here

还有一些细节:
enter image description here

我真的不知道如何解释这个...

谢谢。

0 个答案:

没有答案