MimirMemoryLogger 0.3.0

MimirMemoryLogger 0.3.0

维护者:Amer Eid.



  • amereid

CI Status Pods Version License Platform

适用于 iOS 的堆日志框架(内存快照)

概述

MimirMemoryLogger 是一个内存日志框架(Swift & Objective-C),旨在帮助开发者在无法连接到 Xcode 时更好地调试内存问题。

该框架实现的功能基本上是捕获 iOS 设备的堆快照,并将其保存为 json 文件。然后,可以使用我编写的 Python 脚本对该 json 文件进行处理(请不要评判我的 Python 代码😅)😅),该脚本将遍历 json 文件中的所有内存实例,并在终端中进行排序。

工作原理

  1. 触发保存内存堆快照的次数,例如当应用接收到 applicationDidReceiveMemoryWarning
  2. MimirMemoryLogger 将内存快照保存到磁盘
  3. 用户将内存快照(自动或手动)发送给开发者
  4. 开发者使用包含 json 内存快照的参数运行 Python 脚本
  5. 脚本显示了您应用程序的内存堆使用情况,允许开发者了解内存使用过多的原因

Python 脚本示例

这里是使用python脚本(包含在仓库中)与堆快照json文件的结果示例2个。

python script mimir MimirMemoryLogger

python script mimir MimirMemoryLogger

json内存快照示例在./Resources/snapshot-samples目录中。

使用说明 - Swift

拍摄内存快照

import MimirMemoryLogger // Do not forget this

MimirMemoryLogger.saveCurrentSnapshotToFile { (url) -> (Void) in
  if let url = url {
    print("Memory snapshot location: \(url.absoluteString)")
  }
}

获取之前保存的快照

if let urls = MimirMemoryLogger.getSavedSnapshots() {
  print("URLS of all saved snapshots: \(urls)")
}

定制

你可以设置磁盘上保留的最大快照数量。默认为5。

MimirMemoryLogger.maxNumberOfSnapshots = 3

如果你想在保存和获取快照时获取更多详细信息,可以在MimirMemoryLogger中将verbose设置为true。这将打印出追加的详细信息,例如保存快照所需的时间或是否存在任何错误。

MimirMemoryLogger.verbose = true

使用说明 - Python脚本

在终端中查看json快照

本项目的实现依赖于一个Python脚本,该脚本用于对json快照文件中的结果进行排序和美化,与readme文档开头提供示例图像中的效果相同。该脚本位于此处:./PythonScripts/MimirMemoryLogger.py

此脚本是在BeautifulTable的帮助下编写的。

只需将json文件作为参数调用此脚本即可(json快照的示例可在我处找到:./Resources/snapshot-samples)。

例如:

python3 MimirMemoryLogger sample-snapshot.json

注意

此框架仍处于早期阶段,将持续进化。

如果您使用此框架且喜欢它,请随时告诉我。😊

安装

Mimir可通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中

pod 'MimirMemoryLogger'

作者

Amer Eid,[email protected]

许可

Mimir遵循MIT许可。更多信息请查阅LICENSE文件。