我们的应用已在应用商店上线。我希望识别出一些用户遇到的内存不足的崩溃。我知道没有办法 100% 识别内存不足崩溃。有没有办法通过在 applicationDidReceiveMemoryWarning 中执行一些逻辑来识别这些崩溃(很有可能)?(我不是说在开发期间在 xcode 中找到它,我说的是可以识别实际用户的内存不足崩溃并将某些内容记录到文件的代码)
3 回答
当我在寻找任何可以提供 OOM 跟踪的服务或库时,我只能从 Facebook 工程中找到这篇文章:
https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/
这个想法是推断应用程序需要启动的原因,检查不同的方面(比如应用程序是否在后台,是否有应用程序/操作系统更新......)。
排除所有其他可能强制前一个应用退出的可能原因,您可以知道原因是后台内存不足还是前台内存不足。
有一个实现 Facebook 文章过程的库会很好。但是现在我找不到任何东西,可能有一些原因使它变得困难或者可能无法将它添加为 sdk。
如果有人知道任何服务,请与大家分享评论或新答案。
编辑:
我发现这个 github ( https://github.com/jflinter/JRFMemoryNoodler ) 实现了 Facebook 发布程序。我还没有尝试过,但我们将在我们的应用程序中部署它来尝试它。
applicationWillTerminate
在您的应用委托中查找消息。如果您的应用程序被系统终止(例如由于内存不足),则会调用此方法,但如果用户按 Home 键以通常方式离开应用程序,则不会调用此方法。注意:如果您的应用程序在后台并且内存耗尽,您的应用程序将被终止,而不会向其发送任何消息。
YMMV,尤其是旧版本的 iOS,值得研究以确保上述内容准确无误。
这篇博文中的图片信息量很大(虽然有些过时)。
有关更多信息,请参阅如何知道应用程序是被用户还是 iOS 终止(后台 10 分钟后)
首先通过单击 Xcode 顶部菜单栏的 Product 分析您的应用程序,然后单击分析部分,它将显示应用程序中的泄漏数量,并可以将您带到发生泄漏的地方。这就是您可以找到内存泄漏并纠正它的方法。其次,上面的方法不起作用,然后查看发生崩溃的视图控制器并检查您是否留下任何要释放的对象。希望这可以帮助您解决问题。