问题标签 [didreceivememorywarning]

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

objective-c - iPhone Xcode ARC 中的内存警告,但 Instrument 未显示任何泄漏

我已经使用 ARC Xcode 4.5 完成了我的应用程序的编码,但它给了我“收到内存警告。”。正因为如此,我没有上传它。

当我用仪器测试它时,它没有显示任何泄漏,但会发出内存不足的警告,并且在 4-5 次警告后应用程序终止。

我对评论中的某些观点有疑问。

或者也许还有其他问题?

0 投票
0 回答
441 浏览

ios5 - viewDidUnload 弃用,但是对辅助视图的强引用呢?

在 iOS6 中,该方法viewDidUnload已被弃用,内存管理对于UIViewController. 这里简单介绍一下新模式。
在视图控制器中占用更多内存的部分是视图(当然还有您最终会创建的大量数据)。视图本身不会消耗太多内存,是后备存储,被绘制的部分(最奇怪的是CABackingStore)。这种新模式似乎检查了视图控制器的视图所拥有的所有后备存储所占用的内存是易失性的,这些后备存储未显示在窗口中。当内存警告出现时,该后备存储将从内存中清除。使用这种方法,您可以节省重新创建非常昂贵的视图的过程。
Apple 表示从 iOS5 项目中删除 viewDidUnload/viewWillUnload 是安全的,即使您将部署目标设置为 iOS5,模板也不会显示这些方法。我知道,如果视图拥有的出口很弱,当您在超类实现中释放视图控制器的视图时,由于 ARC,一切都将被正确释放,而不会出现泄漏或僵尸。
因为我真的很欣赏这种新方法,所以我对这种情况没有信心:假设我们有一个视图控制器及其视图,这个视图只是一个内容视图,它将承载在视图控制器的 xib 中创建的不同视图,改变它们在运行时动态。当您为此视图创建出口时,它们会自动创建为强大的,这是有道理的,因为“主视图”不拥有它们。
关于新规则,此视图的后备存储不会被签名为 volatile,因为它们不属于 iOS6 和 iOS5 中的主视图(如果我删除viewDidUnLoad),它们将不会出于相同的原因发布。
我该如何处理这种情况?在 didReceiveMemoryWarning 中释放它们是否正确?但是如果视图只加载一次,我可以在 iOS6 中重新创建它们吗?

0 投票
0 回答
836 浏览

ios - iPad 内存不足警告,虽然没有其他应用程序正在运行,我的应用程序仅分配 8 MB

尽管没有其他应用程序正在运行,但我在 iPad 上收到内存不足警告(通过仪器检查),并且我的应用程序只有 8 MB 的实时字节。

据我了解,iOS 仅在系统资源不足时才会触发内存警告。怎么可能,我仍然得到它们?

(为了更好地了解问题和相关情况,请查看这个问题:Empty drawRect implementation cause memory warning

0 投票
1 回答
3026 浏览

ios - Cordova iOS 自定义插件:处理内存警告

我正在开发一个使用 cordova(2.1) 和一些自定义插件的 iOS 应用程序。

我试图面对的问题如下:当我显示我的插件(基本上是一个比内置的cordova插件具有更多功能的相机插件)时,有时我会收到一个内存警告,并且随后会卸载包含 webview 的视图. 这对我来说是一个非常大的问题,因为一旦我的 imagePicker 被关闭,webview 就不会恢复。

我查看了 CDVCamera 插件源,我注意到的是:

(1)插件保存webview:

在这里,我不明白发生了什么,好的,我们保存 webview 以防在内存警告后将其卸载,但我无法弄清楚 webview 在框架中的恢复方式/位置。

(2) 插件使用一个名为 hasPendingOperation 的 Bool 属性,如果我理解,CDVViewController 在收到内存警告时使用此属性,以避免在插件处于活动状态时清除内存。

我不明白的第一件事是为什么当我的控制器收到内存警告超级控制器(CDVViecontroller)没有收到它时?

其次,是否可以将 CDVCamera 插件使用的模式与 CDVViewController 一起应用来处理自定义插件中的内存警告?

任何有助于使用cordova管理内存警告以避免webview被卸载的帮助将不胜感激。

0 投票
1 回答
328 浏览

ios - 分配 UIButton 和 UILabel 时收到内存警告

情况就是这样:我有一个水平滚动的UIScrollView(称为)。A对于此滚动视图,该属性pagingEnabled设置为YES。在屏幕的右侧,我有一个UIButton,它附加到self.view滚动视图并且不滚动。

在此处输入图像描述

轻按时,此按钮会显示 a UIView,其中包含另一个UIScrollView(称为B)并垂直滚动。此滚动视图包含UIButton和的列表UILabel。每个UIButton作为UIImage背景图像。我UIButton改用UIImageView这种方式是因为这样很容易管理图像上的触摸事件。包含每个图像的UILabel描述。

在此处输入图像描述

问题:对于 中的每个页面A scroll view,我都需要更改 中UIButton包含的内容B scroll view,因为每个页面都有不同的图像列表。因此,在scrollView:didEndScrollingAnimation滚动视图委托方法中,我从视图中删除了旧UIButton的和旧UILabel的,并且还从NSArray包含它们的位置中删除。我创建了一个新列表UIButtonand UILabel,我添加self.view并插入到数组中, with [array addObject:]

在可变数量的滚动后,应用程序会收到一条内存警告消息,并且会从系统中终止。

我使用 ARC,因此几乎不可能理解旧对象是否已解除分配(无论如何都会非常困难,因为它们是系统对象)。

有任何想法吗 ?

0 投票
2 回答
4295 浏览

iphone - Iphone App crashing due to Received memory warning even if i am releasing

Every time is go to the view memory in use is increasing .. even if i am saving images. And afetr sometime the app crashed due to low memory warning. can someone tel me the solution so that the image memory is not increased.

0 投票
1 回答
487 浏览

ios - 设备上的内存警告,而不是仪器

我有一个巨大的同步过程,我在其中下载并解压缩 400-500 个XML文件,然后解析它。有了这些数据,我将在RestKit API. 一开始,我有一个内存警告,实时字节为 450mb+,因为我没有使用自动释放池,只尝试在最后保存核心数据。

我修复了这个问题,现在经常保存到核心数据并使用 @autoreleasepool块。当我现在使用仪器运行我的应用程序时,我可以看到实时字节如何只有 20mb-30mb,总是释放内存并且永远不会变大。这个过程是有效的。但是当我在没有工具的情况下启动应用程序时,在查看文件后我得到一个Memory Warning. 后来应用程序崩溃。

instruments使用和不使用该工具运行应用程序有什么区别?为什么会以不同的结果结束?

0 投票
1 回答
1985 浏览

iphone - 在 iOS 中清除内存警告中的 url 缓存

NSURLCache收到内存警告时清除共享是一种好习惯吗?像这样的东西:

我是否正确地假设这也会不必要地清除磁盘缓存?

如果是这样,是否可以只清除内存缓存?

0 投票
0 回答
140 浏览

ios - applicationDidReceiveMemoryWarning期间的ios核心数据持久化

我在应用程序委托中的 applicationDidReceiveMemoryWarning 方法中添加了 managedObjectContext 保存。当我现在收到内存警告时,该应用程序似乎在某些设备上崩溃。

似乎保存将应用程序推到了内存限制之上,因为它已经很低了。

我在该方法中进行此保存的原因是捕获在正常应用程序操作期间可能未保存的任何内容。

有人可以告诉我这是否是不好的做法吗?

谢谢。

0 投票
1 回答
592 浏览

iphone - iOS 保存/保留数据的位置 didReceiveMemoryWarning(等效于 Android Bundle onSaveInstanceState)

我的问题很简单。我什么时候收到内存警告,我应该在哪里保存或保留数据或状态以便检索viewDidLoad()

例如,我有一个带有 TextField 的视图,用户写了一封电子邮件,然后它对另一个应用程序执行了某些操作,我的应用程序收到了内存警告,我用它来处理它didReceiveMemoryWarning(也许那时,视图将被卸载)。那么,我在哪里保存“电子邮件”以便设置到 TextFiel 中viewDidLoad()?我应该用 Core Data 保存它吗?SQL?

当我使用Android并且SO要删除一个View时,该方法OnSaveInstaceState被调用并且我可以将数据保存到一个Bundle中,iOS中有没有类似的对象?

非常感谢。