关于调用系统相机内存泄漏的分析和解决

        本文主要分析ipad使用UIImagePickerController调用系统相机出现内存泄漏问题,经测试iphone上并未出现内存泄漏现象!


正文:

         使用xcode自带内存分析工具发现在拍照过程中内存消耗很大,且随着拍照越来越多内存占用越来越多,最终使得程序挂掉,下图为拍照前后内存使用情况以及leak工具检测结果:

拍照前内存使用情况:

拍两张后内存使用情况:

leak工具检测结果:

        以上检测结果是使用Xcode自带的debug和instruments中的leak工具检测,从leak工具检测结果可以清楚的看到拍照过程中存在内存泄漏点为:[AVCapturePhotoOutput init];AVCapturePhotoOutput作为照片输出流是ios10新出的,于是考虑用老的AVCaptureStillImageOutput作为图片输出重新写了一套拍照实现,经测试不再有内存泄漏。修改后leak检测结果如下图:

修改后leak检测结果:

注:目前在ios11上官方仍未修复AVCapturePhotoOutput存在的内存泄漏问题、经测试AVCaptureStillImageOutput在ios11上仍然可用,当然这只是一种过渡解决方案,已经向官方提了bug reporting,希望官方能尽快修复这一问题!

附:自定义相机实现并不复杂这里不再赘述

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,886评论 25 709
  • 先来一发苹果官网上Instruments User Guide,其实没啥用,英语不好的也懒得去看。(反正我是看不懂...
    和珏猫阅读 30,183评论 51 376
  • 什么是内存泄漏?内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造...
    旧歌i阅读 4,048评论 4 6
  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    宇宙只有巴掌大阅读 2,422评论 0 12
  • 公司团建,组织去武夷山旅游四天三夜,其中还占了两天周末,这点就让人很不爽了。本来呼声最高的目的地是桂林,最后也不知...
    老毛zoo阅读 416评论 5 2