我正在使用
id<MTLBuffer> vertexBuf = [device newBufferWithLength:count * sizeof(float) options:0];
如何释放vertexBuf内存,它会大大增加内存。在apple的文档中没有提示释放MTLBuffers.And在我的情况下我不能再次重用它。我已尝试vertexBuf = nil;
没有任何改进,因为我的项目启用了ARC,所以我无法使用[vertexBuf release]
。有什么方法可以释放内存吗?
编辑:
我可以重用,但OpenGLES2 glDeleteBuffers
中有一个选项,在许多情况下都很有用。所以我的搜索方式与金属相似。
答案 0 :(得分:1)
找出谁正在使用vertexBuf。有人正在使用它,并坚持下去,或者如果你把它设置为零,记忆就会消失。
顺便说一句。发布不会对您有所帮助。 ARC确实为您保留/释放,除非它可能更加小心并且始终正确。如果你可以释放它并且内存消失了,当使用vertexBuf的人也发布它时你的应用程序会崩溃。
答案 1 :(得分:0)
试试这个:[vertexBuf setPurgeableState:MTLPurgeableStateEmpty];
这是Apple的文档:
如果state是MTLPurgeableStateEmpty,则资源被标记为可以丢弃的数据,因为调用者不再需要资源的内容。