问题标签 [heapshot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
499 浏览

memory-management - 这个 Heapshot 是什么意思?

我一直在拍摄某个过程的快照。所有镜头中的所有泄漏对象均源自此方法:

这是实际的快照,它们看起来都与此相同:

合影

我有几个问题:

  1. 我的下一步是什么?我没有看到这种方法有任何泄漏,为什么它在 heapshots 中如此突出?
  2. [self resetArticleView]旁边有 65%,但该特定方法没有显示在我的泄漏对象的堆栈跟踪中。我是否误解了特定的 65% 指定的含义?如果它确实意味着它包含 65% 的泄漏分配,为什么该方法不在任何堆栈跟踪中?
0 投票
1 回答
1038 浏览

ios - 程序运行时内存蠕变,CGGlyphBitmapCreate(等等)?

这是昨天提出的一个更广泛的问题。我一直在使用 heapshots 来查明问题,但它们都存在于我不熟悉的调用者中。我自己编写的方法没有出现,但 CoreGraphics 似乎在疯狂地吃内存。

本周我已经准备好提交我的应用程序,但遇到了一个大问题。我一直在做很多 QA 和泄漏检测,并且正在通过 heapshot/allocation profiling 完成这个过程。不幸的是,这并没有按计划进行。该程序本身并没有“泄漏”,但毫无疑问它正在攀升。

解释程序的最佳方式是数学抽认卡(第一个应用程序,学习绳索,我想让它变得简单)。有 5 个按钮、2 个图像视图和 2 个 UILabel。我把头撞到墙上,想知道我的设计是否有问题(简短的回答:可能),但更担心内存蠕变几乎肯定不会让我进入应用商店。

因此,过程:视图显示一个主页按钮(用于返回主菜单)、一个复选框(用于标记稍后的问题)、一个 UILabel 中的数学问题和一个获取答案按钮。当您按下获取答案时,答案会显示在第二个 UILabel 中,并且会出现另外两个按钮(正确和错误),并且获取答案按钮标题会更改为“获取问题”。按下 Get Problem 让我们回到开始,遇到一个新问题。

我一直在使用 heapshot 来查找占用了多少内存,并且我发现每次通过一次迭代我都会丢失 10-15KB (按“获取答案”然后按“右”或“错误的”)。最严重的违规者是所谓的“CGGlyphBitmapCreate”,老实说,我对它的实际含义知之甚少。

其他一些注意事项:“主页”按钮是在 IB 中创建的带有 .png 的自定义按钮。根据复选框的状态(我隐藏一个,然后显示另一个,反之亦然),我在两个 .png 之间切换(通过.hidden)的没有文本的“标记”按钮没有文本。

调用堆栈:

先感谢您。

0 投票
1 回答
2200 浏览

ios - MKMapView 没有为 MKUserLocation 释放内存

我有一个导航控制器,其中 VC1 将 VC2 推送到导航堆栈上。VC2 在基于选项卡的视图中有一个 MKMapView,并打开了用户位置。当我使用 Heapshot Analysis 工具检查仪器的重复分配时,我反复发现一些 MKUserLocation 对象在我回到 VC1 时没有被释放。 在此处输入图像描述

我已经删除了所有注释,并且在 dealloc 时也禁用了用户位置。这种堆增长的原因可能是什么?

将 VC2 推入导航堆栈的 VC1 代码:

VC2中的dealloc代码:

}

此外,如果我不打开用户位置,也没有堆增长。

更新:我在模拟器和 iPad 3G+WiFi 上对此进行了测试,在这两种情况下我都发现了这种堆增长。

0 投票
1 回答
921 浏览

ios - iOS 分配 - 堆中的持久计数并不总是 0

在分析我的 iOS 应用程序时,我多次执行一个简单的任务,我从堆栈中推送和弹出一个视图,然后进行 heapshot。每次都执行相同的代码,推送的视图只包含一些图像,一旦视图被弹出,这些图像就会被删除。

仪器截图

现在因为几乎一半的堆快照的持久计数为 0,假设没有废弃的内存是否安全?

我听说持久计数大于零的行可能是因为一些内部缓存。

我正在使用 Xcode 4.2.1,而应用程序正在使用 ARC。

编辑:

感谢 Kendall Helmstetter Gelner,我设法进一步调试了这个问题。我可能不应该使用模拟器来调试它。我现在已经在设备上运行了它,现在看起来好像有一个对象没有被释放:

在设备上运行的应用程序的快照

在查看扩展的详细视图后,我想我已经找到了问题的原因。

0 投票
0 回答
266 浏览

ios - iOS heapshot analysis, UIImage & NSData

I used the heapshot analysis, and it pointed to the first two lines reproduced below. It seems like I am releasing all the memory I am allocating. I don't see how the memory is accumulating.

0 投票
0 回答
336 浏览

ios - UIPickerview 在释放时导致堆增长

iOS 新手,尽我所能掌握内存管理和 Instruments。

我的问题是添加/删除pickerview 时出现奇怪的内存丢失。我已经设置了一个非常基本的示例,其中包含两个按钮:一个创建并显示选择器。另一个将其从主视图中删除。

分析仪干净,仪器没有报告任何明显的泄漏。但是 - 当我重复这个“显示和隐藏”操作时,堆内存继续增长。

这是代码。我在 XCode 4.5 上,启用了 ARC:

我的 ViewController.h:

视图控制器.m:

Instruments 上的对象列表显示UIPickerView每次迭代都很好,所以看起来它被正确地释放了。嗯,不完全是。这是来自 heapshot 的示例:

在此处输入图像描述 (对不起,我还不允许发布图片)

现在,如果我实际上正确地释放了pickerview(从视图中删除并将其引用设置为nil)这些分配来自哪里?

在旁注中-UIPickerTableViewTitledCell堆栈跟踪上的那件事让我感到怀疑,因为有些人在泄漏涉及该问题的pickerviews方面遇到了类似的问题(请参阅thisthis one),但是我无法确定自己是什么应该与此有关。不确定它们是否真的与我的问题有关,但如果运气好的话,它们可能会指向正确的方向。

有小费吗?

0 投票
1 回答
2369 浏览

ios - 没有 Heap shot 分析

我试图找出我的应用程序在哪里放弃了内存以及我看到的所有资源都说要标记heap shot.

但是我只有一个标记生成按钮。我应该在哪里找到堆射击按钮?或者它只是改变了。

对不起,我是 iOS 新手。

0 投票
1 回答
985 浏览

unity3d - 有没有办法从 Unity3d 获得一个重要信息?

我想调试在 Unity 中消耗大部分单声道内存的部分,因为我从分析器中看到的只是一个块,上面写着“单声道”类似的东西,不知道它是什么。

我已经在 Unity Profiler 中完成了纹理观察,我对此没有任何问题。(我说我用过它,只看到内存高的单块)问题是一定有某种内存泄漏而不是内存尖峰,因为如果我玩游戏的时间足够长,我的 Galaxy Grand Duo 会崩溃并出现黑色纹理,这是内存使用过多。如果我在分析器中看到它,它说 ManagedHeap 和 Mono Domain 只有在多次玩游戏后才具有大块内存。