iOS에서 메모리 누수를 쉽게 감지하는 방법

소개


  • 메모리 누수는 응용 프로그램의 거동을 불안정하게 만드는 요인이됩니다
  • Xcode Debug Memory Graph 등을 사용하는 방법도 있지만 매번 조사하는데 비용이 든다.
  • krzysztofzablocki/LifetimeTracker을 도입하면 앱이 메모리 누수를하는 것으로 개발자가 쉽게 알 수 있습니다.
  • 이번에는 LifetimeTracker에 대해 자세히 정리합니다

  • LifetimeTracker란?



    Find retain cycles/memory leaks sooner.
  • LifetimeTracker는 앱 실행시 메모리 누수를 파악할 수 있도록하는 도구입니다.
  • 도입하면 앱 실행시 UI에서 확인할 수 있습니다.

  • krzysztofzablocki/Sourcery의 기여자이기도합니다. krzysztofzablocki이 저자입니다.

    환경


    Xcode 10.1
    Build version 10B61
    Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1)
    Target: x86_64-apple-darwin18.2.0
    

    도입 방법



    1. pods or carthage에서 LifetimeTracker 설치



    pods


    pod 'LifetimeTracker'
    

    carthage


    github "krzysztofzablocki/LifetimeTracker"
    

    2. 설정 처리를 AppDelegate에 추가


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
         LifetimeTracker.setup(onUpdate: LifetimeTrackerDashboardIntegration(visibility: .alwaysVisible, style: .bar).refreshUI)
         return true
    }
    

    3. 메모리 누수를 조사하고 싶은 ViewController에 구현을 추가


    import UIKit
    import LifetimeTracker
    
    class ViewController: UIViewController {
        static var lifetimeConfiguration = LifetimeConfiguration(maxCount: 1, groupName: "VC")
        override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
            super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
            trackLifetime()
        }
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            trackLifetime()
        }
    }
    
    extension ViewController: LifetimeTrackable {}
    

    실제 화면




  • 샘플 코드
  • 메모리에 저장된 인스턴스 수를 메뉴 화면에서 확인할 수 있습니다.
  • maxCount를 설정하면 인스턴스 수가 maxCount를 초과하면 메뉴에 경고로 표시됩니다.
  • groupName를 지정하면 메뉴에서 다른 그룹으로 함께 표시됩니다.
  • 메뉴를 내는 방법도 여러가지 선택할 수 있으므로 실장시에 방해가 되지 않게 되어 있습니다

  • 참고 링크


  • krzysztofzablocki/LifetimeTracker
  • 좋은 웹페이지 즐겨찾기