我目前正在构建一个使用Metal来有效渲染三角形并评估纹理上的适应度函数的应用程序,我注意到我的Metal应用程序的内存使用量正在增长,我无法理解为什么< / strong>即可。
首先,我很惊讶地看到处于调试模式,根据Xcode调试面板,内存使用量增长非常慢(200个生成图像后大约20 MB) ,而在发布时增长得更快(200个生成图像后大约100 MB) 我不会存储生成的图像(至少不是故意的......但也许有一些我不知道的泄漏)。
我试图了解泄漏(如果有的话)来自哪里,但我真的不知道从哪里开始,我采用了GPU帧捕获来查看Metal使用的对象,这对我来说似乎很可疑:
看起来有数千个对象(列表比你在左侧面板上看到的要长)。
每次我绘制图像时,我都会调用此代码:
trianglesVerticesCoordiantes = device.makeBuffer(bytes: &positions, length: bufferSize , options: MTLResourceOptions.storageModeManaged)
triangleVerticiesColors = device.makeBuffer(bytes: &colors, length: bufferSize, options: MTLResourceOptions.storageModeManaged)
我肯定会让它一次性分配,然后在需要时简单地将数据复制到此缓冲区中,但它是否会导致内存泄漏或者根本没有?
编辑#3:在分析哪个Xcode可视化调试器时,这里似乎是最可疑的内存图:
我真的不知道如何解释这个...
谢谢。