- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一款 tvOS 应用。这是我的第一个原生 (Swift) 应用程序。该应用程序将是一个数字标牌应用程序,在事件期间或公司办公室使用。与 iOS/tvOS 上的典型应用程序相比,一个很大的不同是它需要几乎 24/7 全天候运行,因此内存是这个应用程序的一个重要主题。最小的泄漏最终会导致应用程序崩溃。
该应用不断循环播放一组全屏幻灯片。在屏幕底部有一个包含 10 篇文章的滚动条(每 10 秒刷新一次 - 现在正在开发中)。下面是天气幻灯片的屏幕截图,以了解一下。
目前该应用程序在一段时间后崩溃,我很确定我已经将它缩小到代码组件(当禁用它时,该应用程序可以运行数天)。如果我在 Instruments 中使用“Leaks”预设,我会得到以下结果: 看起来它正在泄漏 Article 实例。我每 10 秒重新创建一次 Article 实例,并将它们提供给 ticker 组件。我认为这就是新实例每大约 10 秒泄漏一次的原因。
在我开始使用 Instruments 中的“Leaks”预设之前,我使用了“Allocations”预设,而使用它对我来说一切都很好。但我可能误读了结果……
使用分配: 我读这篇文章的方式是,目前内存中存在 10 个 Article 实例,还有 31 个已经存在但现在已清理 - 所以我很安全。
但应用程序仍然崩溃。
我读了很多关于保留周期的文章,在我认为应该的地方实现了 weak/unowned。
所以我的问题与其说是关于代码,不如说是关于如何读取这些数据,泄漏在这种情况下意味着什么,以及为什么我认为这些“泄漏”不是分配中的持久对象 窗口?
(测试在多个设备+模拟器上完成)
最佳答案
如果您看到 Instruments 中的内存使用量稳定增加(即大约 n GB/分钟或小时),这是一个很好的迹象,表明正在创建对象,但没有释放对象。你对弱变量和无主变量的暗示让我认为你知道这一点,但你可能没有找到泄漏的所有来源。我建议在 Instruments 中进行几代总结,并查看堆分配中的特定类/对象。您的问题类别数量将稳步增加,并且可能永远不会减少。尝试从那里调试问题。
至于“泄漏”在此上下文中的含义,它始终表示:您的计算机未释放内存资源。它可能看起来不同,因为我们习惯于将泄漏视为以更快的速度吞噬内存的东西(例如在四核上运行的无限循环,或其他东西),但这种泄漏实际上是相同的事物;你的速度比较慢。
关于ios - 仪器:泄漏和分配 (tvOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979258/
检测 C# 代码的最简单方法是什么?我所说的检测是指插入我自己的代码片段以在执行期间收集一些动态信息。 例如(星号代表一些不重要的代码): for (int i=0; i。通过捕获方法调用,我的意思是
我有一个 javaagent,它可以打印出所有已加载类的名称及其来源(它们来自哪里)。 public byte[] transform(ClassLoader loader, String class
我可以使用命令行为单个设备/模拟器运行仪器,但我需要在两个设备上运行它。手动我可以通过打开 Instruments 的两个新窗口并制作两个 js 副本并导入它来实现这一点。但我需要使用命令行来实现这一
Closed. This question needs details or clarity。它当前不接受答案。
在 xcode 工具中测试我的 IOS 应用程序时,我有几次内存泄漏。谁能看出标有“-->”的行为什么会泄漏? --> CLLocationCoordinate2D newCoord = CLLoca
我正在尝试分析我的应用程序并想检查内存泄漏。我打算使用 Xcode 仪器。任何人都建议从 Xcode 仪器开始的好教程。请提出任何替代方案。 最佳答案 这里是教程列表,其中一些是文本文档和视频 关于仪
我正在我的 iOS 设备上运行应用程序,但在 Instruments 中,该设备显示为灰色。 这也意味着我无法附加流程 ( Cant launch iOS app with Instruments o
我正在使用工具“分配”来监视应用程序的内存。虚拟机跟踪器的统计数据让我很困惑。为什么有这么多脏内存(对于我的应用程序,达到32M),我用谷歌搜索了一下,知道当应用程序在后台模式下收到内存警告时,应该首
我正在关注 Ray Wenderlich tutorial for instruments ,但我不知道为什么分析没有显示泄漏的对象? - (void)tableView:(UITableView *
我目前正在开发一款 tvOS 应用。这是我的第一个原生 (Swift) 应用程序。该应用程序将是一个数字标牌应用程序,在事件期间或公司办公室使用。与 iOS/tvOS 上的典型应用程序相比,一个很大的
我正在应用程序上运行仪器。根据仪器,未检测到任何泄漏。 但是,类别CFString (store) 一直在上升。有谁知道 CFString (store) 是什么? 这是否意味着我有泄漏? 最佳答案
如何从命令行为 iOS 自动化 (iPhone/iPad) 运行 apple instruments?我看到一些博客说下面的命令 instruments -w -t /Developer/Platfo
当我从 SVN 检查测试脚本时(提交的文件我的 friend ),我不知道为什么脚本不可编辑,播放脚本和停止脚本选项被禁用并且记录不是一切都在发生。 当我创建一个新的自动化项目并导入相同的项目时脚本文
我的应用程序构建仅在运行仪器时崩溃。重现情况是 100%,但在没有仪器的情况下运行发布版本或运行调试版本时不会崩溃。当 Instruments 运行发布版本时,我无法单步执行并找出崩溃的确切原因。当构
在以前版本的 Instruments 中,我没有遇到任何问题,但现在(v6.2)由于某种原因,Allocations 不会列出我的应用程序的任何对象。我试过调试和 Release模式: 请注意,过滤器
我在我的 View Controller 上什么也没做,我看到了应用程序运行时正在变化的图表。 这真的是泄漏吗? 第一次显示绿色复选标记,然后显示 1 次泄漏,然后没有新的泄漏。 所以这意味着没有泄漏
我有一个 Android 项目(由 Cordova 生成),我想向其添加(检测)测试。它只有一个应该测试的 MainActivity.java。 通常这意味着向 build.gradle 添加一些依赖
我有内存问题(我正在使用 ARC),我确定我在应该是 weakstrong @property。我运行仪器,它向我展示了这个分配: 这显然是一个不发布的问题。但是我可以在 Instruments 中找
我正在使用时间分析器分析我的 WatchKit 扩展应用程序,但轨迹是未符号化的: 我的意思是这些对我来说都是无关的符号,我找不到我的方法名称。如果我点击这些符号中的任何一个,我就可以看到汇编代码。如
我正在使用仪器来分析我正在开发的 iPhone 应用程序中的内存使用情况。我想知道,什么是合理的内存分配大小? 当我获得关于我的目标的信息时,我是否应该选中忽略“NS”、“CF”和“Malloc”前缀
我是一名优秀的程序员,十分优秀!