我对我的iOS应用程序做了一个看似无害的变化,应用程序崩溃了,因为随着应用程序运行,内存消耗不断增加,直到崩溃。这可能是内存消耗增加了10倍。
我如何找出哪个类或结构对此负责?我正在寻找类似的东西:
CVPixelBuffer:800MB CMSampleBuffer:100MB CIImage:50MB
我查看了Xcode的内存调试器和Instruments,但一无所获。
这是CIFilter initialiser中的内存泄漏。以下是重现的步骤:
这是代码:
let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
let metadata = CMCopyDictionaryOfAttachments(nil, sampleBuffer, kCMAttachmentMode_ShouldPropagate)!
_ = CIFilter(cvPixelBuffer: pixelBuffer, properties: metadata)
预期成绩:
创建Swift对象并将其丢弃不会泄漏内存。
实际结果:
这是在iPhone 7 Plus和iPhone X上的iOS 11上。