问题标签 [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 回答
184 浏览

cocoa-touch - 内存警告和白屏

我的通用 iOS 应用程序在收到内存警告后死机。实际上它只是执行默认行为-当前可见视图控制器释放其视图,而我在应用程序窗口下方看到空白。所以问题是 - 我应该采用什么技术来防止这种默认行为?

如果内存中没有缓存数据或图像等资源,我应该释放什么?其他视图控制器的视图?

0 投票
1 回答
4908 浏览

ios - 防止 UIWebView 分配大量内存

我遇到了 UIWebView 的问题。我正在使用此组件在 iPad/iPhone 上加载普通网页。UIWebView 呈现在 modalViewController 中。有些页面非常占用内存,有些页面还包含 Flash 内容。

问题是有时在某些页面上我会收到内存警告

当这种情况发生时,当我关闭这个 modalViewController(它在 webView 中加载了页面)时,前一个视图会自动重新加载自身 - 再次触发 viewDidLoad 方法。

我怀疑 UIWebView 中的某些页面消耗了大量内存,而不是应用程序释放其视图的内存,但不会崩溃。

有没有办法限制 webView 的内存消耗,或者有没有其他方法可以避免这个内存警告?

谢谢!

0 投票
2 回答
345 浏览

iphone - iPhone应用程序在内存警告事件之前崩溃

应用程序由于内存开销而崩溃,但 applicationDidReceiveMemoryWarning 事件没有及时引发。(我确切知道崩溃的原因是内存不足,因为它在资源加载时崩溃并且没有相应的崩溃报告,并且XCode没有中断调试,应用程序静默退出跳板)。

所以我正在寻找一些方法来防止这种开销。也许有一个功能或仪器可以提供大量可用内存?

0 投票
1 回答
273 浏览

memory-leaks - 是否可以强制终止 iOS 上的后台应用程序?

我写了一个处理视频的应用程序。众所周知,视频处理在处理高清分辨率时会占用大量内存。我的应用程序似乎总是崩溃。但实际上我 100% 确定,我的代码中没有内存泄漏。仪器显示没有泄漏。

一开始我正在启动一个 OpenGLES 视图和视频引擎。在很短的时间内内存消耗很高,但在初始化完成后下降到正常水平。在此期间,我总是收到内存警告。通常这没有问题。但是,如果我有很多处于挂起模式的应用程序正在运行,则该应用程序似乎正在崩溃。观察崩溃日志并使用调试器显示,我只是内存不足。

我的客户正在用“应用程序崩溃”邮件淹没我的支持邮件。但我确实知道,他们在后台运行的应用程序太多,所以没有内存可用。我认为这是一种糟糕的编程风格,告诉客户他必须在运行应用程序之前关闭后台任务。

根据这篇文章,这是一个常见问题。

我的问题是:是否可以告诉操作系统需要大量内存,以便操作系统应该终止一些暂停的应用程序?这种记忆的东西让我发疯,因为它不是我可以修复的错误。

0 投票
1 回答
402 浏览

ios - 收到内存警告。Level=1 - 带有 5 个选项卡的 UITabBarController 应用程序

我的应用程序包含 5 个选项卡。其中 4 个包含大约 20 个文本字段(以编程方式创建并作为子视图添加到视图中),我的最后一个选项卡是前一个选项卡的预览(屏幕截图)。当用户转到此选项卡时,他应该能够预览并可以选择触发带有预览的电子邮件(将所有 4 个选项卡屏幕截图附加到电子邮件)我已经成功实现了这一点,但导致内存警告。任何帮助将不胜感激,以解决我的问题。

我以这种方式尝试过:如果视图不可见,则在 didReceiveMemoryWarning 中释放对象

并在 viewDidLoad 中再次重新加载视图。我仍然收到内存警告。

0 投票
1 回答
4557 浏览

iphone - 使用 VM 跟踪器进行 iOS 分析。脏和常驻内存导致内存警告,我该怎么办?


你好社区,我正在尝试调试我没有做的。这个应用程序在线工作并缓存文件系统上的所有内容,将所有路径(很多路径)保存在内存中(我看到了错误的方法,但我必须努力)。这个应用程序有一个选项,可以下载所有内容并用相对路径填充内存。
问题是,当我选中此选项时,应用程序开始下载和缓存,但在完成之前它会崩溃。当然,在模拟器上一切正常。
崩溃报告日志讨论了内存警告和被 jetsam 杀死的应用程序。在仪器上使用分配跟踪应用程序我发现实时字节“仅”在 7Mb 左右,这也得益于使用下载期间添加的刷新机制,该机制在下载完成后释放旧路径。
根本没有可见的泄漏。
我开始使用 VMTracker,我发现常驻内存和脏内存非常高,峰值在 61Mb 和 21Mb 左右。有些东西我没有得到。
我已经阅读了很多关于它的问题
“脏”和“驻留”与虚拟内存有关是什么意思?
如何摆脱 Objective-C 中的常驻脏内存?
但是,由于我正在释放其他脏内存来自哪里创建的大部分路径?我怎样才能清洁它?
谢谢,
安德里亚

0 投票
0 回答
333 浏览

uitableview - IOS 5 内存警告在 NavigationController 下显示空白 TableView(不在 IOS 4.3 上)

我在带有导航控制器和内存警告的 iOS5 模拟器(和设备)上遇到了一个奇怪的问题。我有一个 TabbarControl,里面有一个 NavController,然后是一个 TableViewControl。从 tableviewcontrol 我呈现一个 ViewControl,然后我有一个显示 ActionSheet 的按钮。当操作表可见并且我尝试在 IOS5 中模拟内存警告时,发生了一些意外。ViewControl 只是重新加载并正常显示,但是如果我关闭 VIewControl 并尝试返回 TableviControl(在 NavController 内),如果我更改为第二个选项卡按钮,它只会显示一个空白页面(没有导航栏)和 4 个 TabBar 按钮然后返回第一个按钮,然后表格正常加载。

此问题在 IOS 4.3(模拟器或设备)中不会发生。

我很确定这取决于操作表呈现的方式,但我尝试了所有方法来呈现其视图。

这里有一些图像。

桌子 行动 空白的

0 投票
2 回答
8145 浏览

iphone - 有没有办法手动向 iPhone 设备发送内存警告?

这几天我遇到了一个问题。我正在使用图像缓存库,它运行良好,但最终我遇到了内存问题,应用程序自行退出(我想这是因为它只是内存不足)。从图像缓存库中读取源代码后,我发现据说当有内存警告事件时,它会释放所有缓存的图像(图像很大)。无论如何,我是否可以手动直接向设备发送内存警告事件?我正在使用 xcode 仪器工具来评估内存使用情况。

0 投票
1 回答
1606 浏览

ios - iOS 应用程序 - 使用 cgcontextref 绘图时出现内存警告

我正在开发一个应用程序,我正在使用 customClass 的 drawRect 方法进行绘制。

我在视图的图形上下文中画线。当我使用 setNeedsDisplay 一次又一次地重绘它们时,我收到内存警告并且我的应用程序立即崩溃。

我检查了我的 drawRect 代码中是否有任何泄漏。我什么也没找到。内存分配也没有显示出任何重大差异。

问题解决了一次,iOS设备重新启动。但我确信崩溃会再次重演。可能是什么问题呢。你们中有人遇到过类似的问题吗?

代码如下:

更新:

崩溃在同一流程中再次重复。这发生在设备重新启动 8 小时后。我整整 8 个小时都没有使用该应用程序。重新启动设备后,应用程序根本不会在该特定流程中崩溃。

0 投票
2 回答
638 浏览

objective-c - iPad 内存限制

我正在开发的应用程序相对简单,但它会引发内存警告。我试图弄清楚应用程序设计是否需要太多内存,应该重新设计和分解以减少使用,或者应用程序设计很好,但应用程序本身臃肿并且错误地吞噬了比需要更多的内存。

该应用程序从 Web 下载一个包含一组问题的 XML 文件,然后生成一个 UIScrollView 来显示问题控件列表。每个问题控件都有一个 UITextView 和一个 UISegmentedControl、UIButton、UITableView、UITextField 或四个带有 UIButton(自定义日期控件)的 UITextField。这是一个屏幕截图:

http://i.imgur.com/vpa9Z.png

此设置适用于较小的问题集,但该应用程序开始抛出超过 120 个问题的较大集的内存警告。这是在更大的集合上使用 Allocations 和 VM Tracker Instruments 的典型运行:

http://i.imgur.com/gyWOX.png

xml 下载和模型加载时的分配内存峰值,但直到分配内存达到稳定状态后才会引发警告。VM Tracker 内存在它们被抛出时仍在增加,这让我认为控件仍在加载到内存中,并且 VM Tracker 是内存增长导致警告的更好指标。当驻留大小大于 125 MB 时,通常会出现警告。我找到了一种方法可以显着降低 Resident 的大小。问题控件有一个自定义视图,可以为它们提供圆角边缘和阴影。如果我从自定义视图中注释掉 drawRect 代码(如下所示),分配内存保持不变,但驻留大小下降约 30 MB,并且不会增长到 93 MB 以上。

仪器和内存警告看起来像是内存已用尽,但这些数字对我来说似乎很高。我不认为滚动视图中的 120 个问题控件对 iPad 来说是个问题,但我没有关于它们应该使用多少内存的参考框架。考虑到 iPad 可以运行的一些图形密集型游戏,上面的简单 drawRect 代码似乎不会在问题控件中占用超过 30 MB 的空间。这种内存使用率是否看起来很高,或者这是否是您对具有这么多简单 UI 元素的应用程序的期望?drawRect 中是否有一些东西会占用大量内存或有关如何优化它的任何建议?如果看起来这应该最大化 iPad 的内存,我将创建选项卡或页面,并限制我放在选项卡/页面上的问题数量,以便一次仅将一小部分控件加载到内存中。但是,如果 iPad 应该能够在内存中处理它们,我宁愿不分解它们。非常感谢任何输入。