如何避免iOS中的堆碎片

如何避免iOS中的堆碎片,第1张

概述我们的应用程序在运行时会创建大量小对象.它主要归结为Autoreleased NSString和NSNumber对象.由于应用程序被设计为在后台运行“24/7”堆碎片成为一个大问题. 没有完全重组程序,有哪些技术可以避免这种情况. 我刚在想:   – 在最终版本发布后将对象返回池的对象池,但是objets需要是可变的. (NSMuttableString会自动导致堆碎片吗?) 其他人如何处理这个问 我们的应用程序在运行时会创建大量小对象.它主要归结为autoreleased Nsstring和NSNumber对象.由于应用程序被设计为在后台运行“24/7”堆碎片成为一个大问题.

没有完全重组程序,有哪些技术可以避免这种情况.

我刚在想:
– 在最终版本发布后将对象返回池的对象池,但是objets需要是可变的. (NSMuttableString会自动导致堆碎片吗?)

其他人如何处理这个问题?

编辑:这就是我对内存碎片的怀疑.看看rpages和[vm-pageshortage]

eIncIDent IDentifIEr: 81E87769-8E16-4439-AFFA-6D077E01E5EDCrashReporter Key:   96235931c31c6b92a16f5c1b1e4cb363a3d18a67HarDWare Model:      iPhone4,1OS Version:          iPhone OS 7.0.4 (11B554a)Kernel Version:      Darwin Kernel Version 14.0.0: Fri Sep 27 23:00:48 PDT 2013; root:xnu-2423.3.12~1/RELEASE_ARM_S5L8940XDate:                2013-12-13 22:43:36 -0800Time since snapshot: 1582 msFree pages:                              1105Active pages:                            3668Inactive pages:                          2035Speculative pages:                       46Throttled pages:                         100120Purgeable pages:                         0Wired pages:                             22159file-backed pages:                       5400Anonymous pages:                         349Compressions:                            0Decompressions:                          0Compressor Size:                         0Uncompressed Pages in Compressor:        0Largest process:   ArgusProcesses     name                    <UUID>                       rpages       recent_max   fds      [reason]          (state)        Facebook <979b9707d85a31df94b986d91d8c3ce7>         2368             2368  100   [vm-pageshortage]  (resume)       MobileSMS <339505ebbbc4301e87379b095a38ba13>         1448             1448  100   [vm-pageshortage]  (background)      MobileMail <b3574f4bded1315cb2e50e5de205be48>         1575             1575  100   [vm-pageshortage]  (resume) (continuous)            tccd <1fea8c5a71943151b5cd304c7eb0fd8c>          198              198  100   [vm-pageshortage]  (daemon)             kbd <be2d64e41bf43e48a09a23fb129eb0b4>          739              739  100   [vm-pageshortage]  (daemon)      librariand <15fb21b24e823e158caed9f9e9d8b87a>          299              299  100   [vm-pageshortage]  (daemon)     MobilePhone <10e2242652423ae28f278a807a0d6384>         1852             1852  200   [vm-pageshortage]  (continuous)       CVMServer <f26614f7fef63e2faa518272f0fc600a>           96               96  200   [vm-pageshortage]  (daemon)           Argus <d214b453a3453121a8495d5c8eba80fd>        51299            51299  100   [vm-pageshortage]  (location) (frontmost) (resume)IDentityservices <18cc20db2e4739a782cc8e38e03eff52>          398              398  100                      (daemon)           wifID <a5cf99e5a0f032a69bc2f65050b44291>          652              652   25                      (daemon)         syslogd <6539f4cf4dcf34daadf1d99991926680>          140              140   50                      (daemon)          powerd <0a253ac2a99236809422214be1700bc0>          126              126  100                      (daemon)             vmd <93cffd22b64631afa08a42f6a85e1f33>          297              297  100                      (daemon)         imagent <bef102e1faef39209926fb25f428a71e>          438              438  100                      (daemon)
解决方法 解决这个问题的一种方法是找到导致碎片问题的“90%”罪魁祸首.您的代码中可能存在导致瑞士奶酪效应的病理状况.

初步行动

不言而喻,您应首先说服自己,您的高页面使用是由于碎片而不是由于内存泄漏. 总结

以上是内存溢出为你收集整理的如何避免iOS中的堆碎片全部内容,希望文章能够帮你解决如何避免iOS中的堆碎片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1103603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存