我最近开发的应用程序非常频繁地处理大量数据(每分钟约15次)。为此,我分配了一大块内存,然后为每批数据释放它。
这是我的仪器记忆分配屏幕:
内存使用率很快就从大约3MB扩展到大约30MB。我只是想知道,iPhone本身是否“健康”。
如此快速地分配和释放如此多的内存是否有风险?这是不可持续的,还是只是不好的做法?
谢谢!
答案 0 :(得分:7)
这既不危险也不一定是坏习惯。分配和释放内存需要时间,因此非常频繁地执行此操作并重新使用分配的内存是内存使用效率(使用每个时刻最低内存量)和性能之间的权衡。
如果您的应用的性能目前没有受到影响,您可能已经为您的应用做出了正确的选择。
一般来说,使用30 MB的内存对于较旧的设备(iPhone 3G及更早版本)来说相当大。您无法确定您的应用程序是否有足够的可用内存,因此请准备好接收内存警告。如果您的应用在收到内存警告时无法减少其内存使用量,操作系统可能会将其终止。
答案 1 :(得分:4)
我在这些情况下的主要担忧是碎片化。如果块大小都相同,那么你应该没问题(看看你的图表,峰值似乎是完全水平的,所以我认为就是这样)。
你将支付分配费用,但正如Ole所说,如果你的应用程序已经表现得已经足够好,那么尝试优化它并没有多大意义。
答案 2 :(得分:-1)
这取决于,如果用户拥有iPhone 4或iPhone 3GS,它应该可以使用,但在iPhone 3G上它会很快产生内存警告。 iPhone 4为应用程序提供256mb RAM(总共512 MB) iPhone 3GS的应用程序为128mb,总共256个 iphone 3g只有128mb和64mb的应用程序..当没有应用程序运行时通常有大约40mb免费。
正如苹果所说,你应该只分配你真正需要的内存,并尝试不要过多地使用自动释放,因为自动释放给了我们一个被分配的对象 真的不再需要了
如果性能不是太差,我会尝试使用更少的内存并在您真正需要时分配更多。