问题标签 [memory-warning]

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 回答
427 浏览

iphone - UIScrollView PhotoViewer 在 iPod 上 125 张照片后收到内存警告

我陷入了一个奇怪的问题,试图从所有可能的来源中找到解决方案,但还没有运气。

我的要求类似于 iphone 的 photoviewer 应用程序,但还有更多内容,例如上传图像、下载等。所以从技术上讲,我正在做的是创建一个主滚动视图,其内容大小等于所有选定的图像大小 * 图像宽度.I have small view inside 那也等于没有。从选取器中选择的图像。该视图包含一个小的滚动视图和一个允许用户缩放、捏合等的图像视图,主滚动视图具有允许滑动的手势侦听器。要访问图像,我正在存储资产 URL 并在用户向左或向右滑动时获取图像。在任何时候,我只保留 1 张图像是内存,即如果用户滑动到第二张照片,我会从主滚动视图中删除第一张照片。

但是,如果我选择了 125 张照片并多次滑动以结束并返回,我仍然面临 iPod 上的内存问题。

示例代码:-

我应该将 InnerImageView 类作为单格类吗?这会有帮助吗,因为我认为内存问题可能是因为创建了多个对象(尽管我正确地释放了它)。

请各位大侠帮忙!!提前致谢。

0 投票
1 回答
236 浏览

ios - iOS - 收到内存警告,所有 Malloc 都被释放

我正在编写一个应用程序,该应用程序需要我存储来自设备摄像头的像素数据并将像素与之前的视频帧进行比较。

这是给我带来问题的方法:

注意:prevFrameRawData 在类的 init 方法中 malloc'd,然后在 dealloc 方法中释放。

在做了一些测试之后,我发现如果我没有为内存块分配任何值,我就不会收到警告。

我认为当你分配一个值时

它只是覆盖了内存中的那个位置。

所有这些低级c的东西对我来说都是新的,希望你们能提供帮助。

0 投票
2 回答
2161 浏览

ios - 所有 iPad 版本的内存警告阈值

iOS 应用程序有内存警告级别 1 和级别 2。问题是对于所有 iPad 设备(从 iPad 1 到 iPad 4、mini),发出警告的响应阈值是多少。例如,对于 iPad1,是 100 MB 吗?

谢谢


我也曾经打印出收到内存警告时使用的内存。

0 投票
0 回答
76 浏览

ios - 内存警告/崩溃,但不在 Instruments 中

我正在开发一个包含可导航 3d 地图的 iOS 应用程序。我有一个平铺/细节级别的策略,可以根据需要将纹理输入和输出,并根据高度图构建/释放地图几何图形。

不可避免地,在地图上平移后,尤其是在旧硬件上,我收到内存警告,然后应用程序退出。

所以,这本身并不奇怪。我的问题是在这个特定情况下追踪问题:

  • 内存占用似乎相当不错(在 iPad 1 上峰值约为 11MB,平均约为 7MB 活动字节),Instruments 告诉我没有内存泄漏。(使用堆标记多次检查)
  • 但最令人惊讶的是:我无法让它真正崩溃或在 Instruments 中给我一个内存警告。当然,这使得追踪变得非常困难!

有没有人见过这个?

编辑:由于所有的流媒体,它可能是碎片吗?如果是这样,我可以在 iOS 上做些什么?

0 投票
1 回答
1122 浏览

ios - 在后台线程中通过 NSData -initWithContentsOfURL 下载图像时,CFData(存储)增加到 200MB

我在后台线程中使用 NSData -initWithContentsOfURL 来下载一些 4k 图像。我可以在 Instruments 中看到我的 CFData(存储)不断增长并达到 200MB(此时我崩溃了)尽管我使用此代码清除缓存

我在这个问题中发现

我肯定知道导致此问题的代码部分(我对其进行了评论并且内存没有增长超过 50MB)是:

0 投票
3 回答
2275 浏览

ios - 在 UIKit 中出现内存泄漏?

当我在仪器中测试我的应用程序的内存泄漏时,我什么也没发现(使用模拟器运行)。但是当我在手机上运行它然后检查时,UIKit 对象中有很多泄漏。这发生在每个视图中。在模拟器中没有显示此类泄漏。

下面是发生一些泄漏的仪器的屏幕截图。

在此处输入图像描述

当我从 HomeView 移动到 secondViewController 时,没有发现泄漏。如果再次回到家,发现这些泄漏。那么,这是否意味着,我必须释放/取消我在该 secondView 中使用的所有 UI 对象。供您参考,以下是我在 secondView 中使用的 UI 对象。

注意:我的是非 ARC 代码。

以前有没有人遇到过这个问题。我该如何克服这个问题,因为我在我的应用程序的每个视图中都有这个问题。因此,我的应用程序经常出现内存警告并经常崩溃。

谢谢你。

下面是该视图的我的实现文件。

编辑1:

0 投票
0 回答
1488 浏览

ios - SDWebImage 加载图像然后收到内存警告并崩溃

我在我的应用程序中使用 SDWebImage。我的视图控制器中有几个 UIImageView,它们都使用 setImageWithURL: 方法(在 UIImageView+WebCache.m 中)通过 URL 加载图像。应该加载三张图片,两张大约520kb,小一张是180kb。当我运行它时,它会收到内存警告并崩溃,我对此一无所知。谁能帮帮我,谢谢!

这是我的代码:

0 投票
0 回答
230 浏览

iphone - 带有内存警告的 Game Center 延迟

用cocos2d 2.0制作的iPhone游戏差不多完成了,最后添加Game Center。我正在使用 iPod 4 进行测试。我遵循了本教程:http ://www.raywenderlich.com/23189/whats-new-with-game-center-in-ios-6

问题是,当我尝试向 Game Center 提交分数时,游戏开始疯狂地卡顿/滞后 5-10 秒。当我调用以下命令时会发生这种情况:

分数发送成功,没有错误,但是发送时游戏滞后很多,并且控制台中出现内存警告。这个问题似乎与事先出现在控制台中的“CONNECTION INTERRUPTED”消息有关,这似乎是在游戏的内存使用量约为 60MB 时发生的。当我在该消息出现之前尝试更早提交分数时,游戏不会滞后。

我四处寻找,奇怪的是似乎没有其他人抱怨这个,这正常吗?非常感谢任何帮助,谢谢!

0 投票
1 回答
136 浏览

iphone - 内存警告和崩溃问题

我已经使用 ARC 开发了应用程序。在我的 UIViewController 之一中,有许多子控制器(如按钮、标签、文本字段、文本视图、滚动视图)都有其 IBOutlet。这里的问题是,我使用的是 iOS 6.0。

iOS 6.0 viewDidUnload方法已弃用。所以在Pop的时候,这个方法是不会被调用的。每当将此控制器推入导航堆栈时,我已在此处检查“产品--> 配置文件--> 分配”,它会增加实时内存字节,但弹出内存字节不会减少。因此,在使用应用程序一段时间后,我收到了收到内存警告,并且应用程序将在随机实例中崩溃。

有没有其他方法来处理这种后端内存管理问题。

0 投票
2 回答
10440 浏览

ios - 为什么只分配了 7 MB 内存时会收到内存警告?

我正在 iPod touch 设备上运行我的 iOS 应用程序,即使总分配峰值仅为 7 MB,我也会收到内存警告,如下所示(当游戏场景被推送时会发生这种情况):

内存不足警告

觉得奇怪的是:

  • 左峰值(在时间 0.00)对应于分配的 20 MB 内存(介绍场景),尽管如此,它不会给出任何内存警告。

  • 中央峰值(在时间 35.00)对应于分配的大约 7 MB 内存(正在推送游戏场景)并且确实会发出内存警告。

如果总内存只有 7 MB,我不明白为什么会收到这些警告。这是正常的吗?我怎样才能避免这种情况?

密度峰值

查看分配密度,我们可以看到以下模式,(对我而言)在推送介绍场景的时刻 (0.00) 和推送游戏场景的时刻 (35.00) 之间没有太大区别。由于密度峰值相似,我会假设内存警告是由于我无法发现的其他原因造成的

编辑:

我一直在遵循使用“活动监视器”的建议,但不幸的是,我的应用程序在加载仅分配 30 MB 内存的游戏场景时崩溃。这是活动监视器报告。

活动监控报告

查看报告,我可以看到总的实际内存使用量约为 105 MB。鉴于这应该是指 RAM 内存,并且我的模型应该有256 MB的 RAM,这不会导致 APP 崩溃或内存泄漏问题。

我运行泄漏监视器,它没有在我的应用程序上显示任何泄漏。我还杀死了所有其他应用程序。

但是,分析报告后,我发现与我的应用程序相关联的虚拟内存值达到了惊人的167 MB。这是正常的吗?这个值是什么意思?这可能是崩溃的原因吗?如何检测我的代码的哪些区域对此负责?

虚拟内存

我的 iPod 是第 4 代机型,容量(内存)为 6.4 GB,只有 290 MB 可用内存。我不确定这是否会影响虚拟内存分页性能。

编辑 2:我还更多地查看了 SpringBoard,它的虚拟内存使用量为 180 MB。这是正常的吗?我发现一些问题/答案似乎表明 SpringBoard 负责自动释放对象(它应该是管理屏幕和主页按钮的过程,但我不确定它是否也与内存管理有关)。它是否正确?

另一个注意事项。我正在使用 ARC。但是我不确定这与问题有多大关系,因为没有明显的内存泄漏,XCode 应该将添加 release/dealloc/retain 调用的代码转换为编译的二进制文件。

编辑 3:如前所述,我使用的是 ARC 和 Cocos2d (2.0)。我一直在玩活动监视器。我发现如果我删除了 GameCenter 身份验证机制,那么 Activity Monitor 运行良好(新的疑问:其他人有类似的问题吗?GameCenter 身份验证视图是否保留在某个地方?)。但是我注意到,每次我在 GameScene 之前的各个场景之间来回导航时(初始场景 -> 角色选择 -> 星球选择 -> 角色选择 -> 星球选择 -> 等等.. -> 角色选择..)REAL MEMORY 使用量增加。过了一会儿,我开始收到内存警告,并且应用程序被 iOS 杀死。现在的问题是:

-> 我是否以正确的方式替换场景?我从各种场景中调用以下内容:

我有Cocos2d 2.0 作为静态库,replaceScene 的代码是这样的:

我想知道场景是否以某种方式没有正确释放。我验证了清理方法正在被调用,但是我还在CCLayer dealloc 方法上添加了一个 CCLOG 调用并重建了静态库。结果是 dealloc 方法似乎没有被调用

这是正常的吗?:D

我发现其他人也有类似的问题。我想知道它是否与保留周期和自我块有关。我真的需要花一些时间研究这个,除非从 EDIT 3 开始,任何人都可以告诉我我做错了什么:-)