Iphone 内存不足,有640Kb的活动字节?

Iphone 内存不足,有640Kb的活动字节?,iphone,memory,Iphone,Memory,我的应用程序有一个问题,需要显示很多图像和视频 在运行ObjectAlloc工具后,我发现应用程序崩溃时,活动字节数为640Kb,总内存为31,54Mb 在organizer中,我得到一个“内存不足”报告,所以我猜应用程序崩溃是因为内存不足,但ObjectAllocation数据对我来说没有任何意义 有什么想法吗 这是组织者崩溃日志: Incident Identifier: CDCAF38C-CFFD-4316-9C4A-5C8E37794B49 CrashReporter Key: 65

我的应用程序有一个问题,需要显示很多图像和视频

在运行ObjectAlloc工具后,我发现应用程序崩溃时,活动字节数为640Kb,总内存为31,54Mb

在organizer中,我得到一个“内存不足”报告,所以我猜应用程序崩溃是因为内存不足,但ObjectAllocation数据对我来说没有任何意义

有什么想法吗

这是组织者崩溃日志:

Incident Identifier: CDCAF38C-CFFD-4316-9C4A-5C8E37794B49
CrashReporter Key:   65390aeb97b2b81076576c3e33b025feb5db9202
OS Version:          iPhone OS 3.1.3 (7E18)
Date:                2010-05-19 10:07:19 +0200

Free pages:        372
Wired pages:       12260
Purgeable pages:   0
Largest process:   DTMobileIS

Processes
         Name                 UUID                    Count resident pages
       ATreeTest <1d51c3a5fef8b747c3a1be9405bdd52a>    1150 (jettisoned) (active)
      DTMobileIS <69c3fa96db2f29474d62964aa1a69bfa>    3316
notification_pro <8a7725017106a28b545fd13ed58bf98c>      68
    mediaserverd <3d3800d6acfff050e4d0ed91cbe2467e>     464 (jettisoned)
         syslogd <8eddddc00294d5615afded36ee3f1b62>      56 (jettisoned)
            apsd <32070d91b216d806973c8f1b1d8077a4>     173
     SpringBoard <324939a437d1cca1fa4af72d9f5d0eba>    2475 (jettisoned) (active)
      accessoryd <8f21c8b376d16e2ccb95ed6d21d8317a>      99 (jettisoned)
notification_pro <8a7725017106a28b545fd13ed58bf98c>      64
            ptpd <f5e735bffd0557fcdc53cb35b6d9ce66>     129
         notifyd <591dd4dd804b4b8741f52335ea1fa4ab>      64
      CommCenter <b4b87526ae086bb62c982f1078f43f81>     167
         configd <85efd41aceac34ccc0019df76623c7a9>     294
       fairplayd <a2eaf736b3e07c7c9a2c82e9eb893555>      91
   mDNSResponder <df1cd275e4ad434e0575990e8e1da4cb>     101
       lockdownd <80d2bd44c0bcca273d48ce52010f7e65>     285
         launchd <a5988245aade809bf77576f1d9de42c5>      71



**End**
事件标识符:CDCAF38C-CFFD-4316-9C4A-5C8E37794B49
CrashReporter密钥:65390aeb97b2b81076576c3e33b025feb5db9202
操作系统版本:iPhone操作系统3.1.3(7E18)
日期:2010-05-1910:07:19+0200
免费网页:372
有线网页:12260
可购买页面:0
最大流程:DTMobileIS
过程
名称UUID计数常驻页面
ATreeTest 1150(丢弃)(激活)
DTMobileIS 3316
通知(u pro 68)
mediaserverd 464(已丢弃)
syslogd 56(已丢弃)
apsd 173
跳板2475(已丢弃)(活动)
附件D 99(已丢弃)
通知(u pro 64)
ptpd 129
通知64
通信中心167
配置294
费尔普拉德91
MDnsrresponder 101
锁定285
发射71
**结束**

ObjectAlloc工具不会显示应用程序的全部内存使用情况,尤其是当您处理大量用户界面元素时。要在任何给定时间更准确地读取应用程序的总内存占用,请改用
内存监视器
仪器。您将看到您的应用程序确实超出了设备上的内存阈值

通过单击Instruments中工具栏的Library(库)按钮,可以添加
内存监视器
仪器。此时会出现所有可用仪器的列表,您可以将
内存监视器
拖到主窗口的仪器区域


如果将
内存监视器
仪器与
ObjectAlloc
仪器结合使用,您应该能够跟踪应用程序中触发内存峰值的原因。为内存监视器选择
跟踪检查头
选项(在仪器列表下方;首先单击内存管理器以激活该工具,选项将显示在底部窗格中),以查看应用程序在执行过程中的任何时刻记录的内存大小。

确定谢谢-非常好的提示。实际内存在加载时以137MB的速度启动,无需执行任何操作。那真的很高,对吗?现在我使用分配和CallTree小节四处查看。我终于看到了与137MB相匹配的数字。当我向下看调用树时,内存部门中所有的重量级人物都是这些渲染类,它们可以输出图像。我正在使用CGContextRef和drawing等等,然后在最后吐出并返回UIImage*img=[UIImage ImageWithcImage:imageMasked]并发布所有内容。我不知道这是否准确。其他答案说“真实内存”包括已经释放的内存块,但操作系统尚未回收(请参阅)。那么这是否正确?我应该担心对象分配中的10mb“活动字节”还是内存监视器中的80+mb“真实内存”?根据经验,我可以告诉你,内存监视器报告的内存使用情况似乎很正常。在较旧的设备上,当我通过此仪器测量的某些阈值时,内存警告立即触发。在我的回答中,我对分配和内存监视器工具之间的差异做了更多的解释: