iOS 开发中,单款应用程序的设置最大可用内存存是多少

查看: 4653|回复: 3
64位的linux上单个进程可以使用的最大内存数量是多少
论坛徽章:7
最近作一个项目,计算强度很大,需要缓存大量数据,手头又没有可测的机器,不知道哪位仁兄有这方面的经验给指点一下,最好是实际做过的?
求职 : 认证徽章论坛徽章:184
论坛徽章:349
32位的是4G!
论坛徽章:349
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号iOS 开发中,单款应用程序的最大可用内存是多少?
iphone 和ipad 的可用内存分别是多少?
iPad1最大可占到110M左右,如果冲到120M就有可能被杀掉。
iPad2可以占用到300M以上,这个不太稳定,可能冲到350就被杀掉了。
可以在收到内存警告的时候自己的程序内部做些内存释放处理。 另外可能在内存紧张时设备的cpu也非常紧张或正在超频,那你即使在程序中对系统内存警告进行了处理,基本上也于事无补了,会crash。因为系统的内存警告有一定的滞后性,你收到后再处理,可能已经晚了,再加上cpu没空处理,再延后些就更不行了。所以以上我说的两个可能的最高值也不太可靠。
你也可以用intruments实时跑一下,看下内存到多大时收到警告级别,控制下自己的内存,也可以用直接读取当前设备中自己的程序占内存和设备剩余内存进行实时处理,对自己的程序进行内存处理,防止被杀掉。这种方式比收到警告再处理可靠多了,目前我们内存占用大的程序基本上用这种方式处理,不理会系统的内存警告。 因为我最近在做ipad的程序,所以对ipad1和ipad2的内存稍微了解点,iphone各版本处理方式一样,只是内存占用不太一样。iphone4和4s的内存与ipad2是一样的。
如果你想让用户 在尽量多的iOS设备上得到比较稳定的体验,
实用过程中不Crash, 不因为GC而停顿,
答案是: 越少约好. 比如, 在一个越狱的iPod touch4上,
如果用户安装了第三方的输入法,
在加上用户频繁切换应用程序,
那么你最好能将内存控制在3M以内.
否则会频繁收到memory warning的提醒. 一旦收到该提醒,
iOS会自动调用viewDidLoad方法, 释放none top view, 来节约内存.
有很多代码质量不高的App 就会在这里crash掉.接着用户在你的App上点击了一些按钮,
刚才这些释放掉的view又需要重新建立.
于是就会卡一下.如果在memory warning后没有释放足够多的内存, iOS会直接kill掉你的App.那么, 如何保持内存占用不要太高?1.
tableviewCell中的icon图片要用剪裁过的, 不要把那些1M左右的图片直接从web端传输过来2.
一些比较深,或者循环比较多的代码block中, 尽量在外围套一层autorelease pool,
执行完毕后直接[pool drain]3.
tableview cell一定要reuse,
其他类似的view也要reuse.暂时想到的就这些,
哪位有经验的可以帮忙补充下.
这个跟iOS系统版本、硬件版本都有关。但512M那是相当不靠谱的,iOS系统就不占内存了吗?App运行时,资源文件所占的空间可以相对大一点(不一定都加载到内存),但动态开辟的内存超过20M在iPad1代上就很不稳定。
根据上的说法,App占用的内存空间可以是as much as you want, until the OS complains。然后会有人说,可以使用的内存很大,其实是一种误解,到现在人家Apple也没有说自己的内存管理规则,也不告诉你iOS系统在运行时所占的空间、后台保留程序的内存保有量,App运行时,并不是一定要把资源全部加载到内存,App运行时真正在内存中占的空间是动态的,它能够使用的内存也是动态的。
建议不要超过 10M. 如果用户 只运行一个程序 内存是用可以到 30M 左右.
不过这概率 几乎不可能.
一般 超过 10M 就会 memory warning L1 系统会 kill 一些不用的 view
内存管理 是门学问. 呵呵
转载StackOverflow上面的回答做了一些测试如下,不是官方数据iPad1: 127MB/256MB/49% (crash amount/total amount/percentage of total)iPad2: 275MB/512MB/53%iPad3: 645MB/1024MB/62%iPad4: 585MB/1024MB/57% (iOS 8.1)iPad Mini 1st Generation: 297MB/512MB/58%iPad Mini retina: 696MB/1024MB/68% (iOS 7.1)iPad Air: 697MB/1024MB/68%iPad Air 2: 1195MB/2048MB/58% (iOS 8.x)iPod touch 4th gen: 130MB/256MB/51% (iOS 6.1.1)iPod touch 5th gen: 286MB/512MB/56% (iOS 7.0)iPhone4: 325MB/512MB/63%iPhone4S: 286MB/512MB/56%iPhone5: 645MB/1024MB/62%iPhone5S: 646MB/1024MB/63%iPhone6: 645MB/1024MB/62% (iOS 8.x)iPhone6+: 645MB/1024MB/62% (iOS 8.x)iPhone6s: 1195MB/2048MB/58% (theoretical, untested)iPhone6s+: 1195MB/2048MB/58% (theoretical, untested)
这里有篇文章,可以参考一下
LS的512m太不靠谱
我写了个for循环,模拟内存泄露,5s真机调试。 在程序占650M左右的时候,崩溃了。
5s内存是1G。
我写了个for循环,模拟内存泄露,5s真机调试。 在程序占650M左右的时候,崩溃了。
5s内存是1G。
ipad1上真是太让人崩溃了
总是&Warning&: Received memory warning.
然后就Application 'XXX' exited abnormally with signal 9: Killed: 9
培训的时候讲师给的数据,给你用作参考吧,注:该数据的科学性本人无法保证。培训的时候讲师给的数据,给你用作参考吧,注:该数据的科学性本人无法保证。
好像没有限制,但系统会自会处理,杀掉进程吧
已有帐号?
无法登录?
社交帐号登录西西软件下载最安全的下载网站、值得信赖的软件下载站!
→ iOS开发中怎么响应内存警告
好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在iOS中我们可以在应用程序委托对象、视图控制器以及其它类中获得系统内存警告消息。1、应用程序委托对象在应用程序委托对象中接收内存警告消息,需要重写applicationDidReceiveMemoryWarning:方法。AppDelegate的代码片段:- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
NSLog(@”AppDelegate中调用applicationDidReceiveMemoryWarning:”);
}2、视图控制器在视图控制器中接收内存警告消息,需要重写didReceiveMemoryWarning方法。ViewController的代码片段:- (void)didReceiveMemoryWarning
NSLog(@”ViewController中didReceiveMemoryWarning调用”);
[super didReceiveMemoryWarning];
//释放成员变量
[_listTeams release];
}注意释放资源代码应该放在[super didReceiveMemoryWarning]语句下面。3、其它类在其它类中可以使用通知,在内存警告时候iOS系统会发出 UIApplicationDidReceiveMemoryWarningNotification通知,凡是在通知中心注册了 UIApplicationDidReceiveMemoryWarningNotification通知的类都会接收到内存警告通知。 ViewController的代码片段:- (void)viewDidLoad
[super viewDidLoad];
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@&team&
ofType:@&plist&];
//获取属性列表文件中的全部数据
NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];
self.listTeams =
[array release];
//接收内存警告通知,调用handleMemoryWarning方法处理
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(handleMemoryWarning)
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
//处理内存警告
-(void) handleMemoryWarning
NSLog(@”ViewController中handleMemoryWarning调用“);
}我们在viewDidLoad方法中注册UIApplicationDidReceiveMemoryWarningNotification消 息,接收到报警信息调用handleMemoryWarning方法。这些代码完全可以写在其它类中,在ViewController中重写 didReceiveMemoryWarning方法就可以了,本例这是示意性介绍一下 UIApplicationDidReceiveMemoryWarningNotification报警消息。内存警告在设备上出现并不是经常的,一般我们没有办法模拟,但模拟器上有一个功能可以模拟内存警告,启动模拟器,选择模拟器菜单硬件→模拟内存警告,这个时候我们会在输出窗口中看到内存警告发生了。 16:49:16.419 RespondMemoryWarningSample[38236:c07] Received memory warning. 16:49:16.422 RespondMemoryWarningSample[38236:c07] AppDelegate中调用applicationDidReceiveMemoryWarning: 16:49:16.422 RespondMemoryWarningSample[38236:c07] ViewController中handleMemoryWarning调用 16:49:16.423 RespondMemoryWarningSample[38236:c07] ViewController中didReceiveMemoryWarning调用
11-2506-2809-2601-2301-2301-2201-2101-1701-1301-13
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载2013年10月 总版技术专家分月排行榜第三
2014年3月 Java大版内专家分月排行榜第一2014年1月 Java大版内专家分月排行榜第一2013年12月 Java大版内专家分月排行榜第一2013年11月 Java大版内专家分月排行榜第一2013年10月 Java大版内专家分月排行榜第一
2014年1月 移动开发大版内专家分月排行榜第二
2014年6月 移动开发大版内专家分月排行榜第一2014年3月 移动开发大版内专家分月排行榜第一
2014年11月 移动开发大版内专家分月排行榜第二2014年4月 移动开发大版内专家分月排行榜第二2014年2月 移动开发大版内专家分月排行榜第二
2014年6月 移动开发大版内专家分月排行榜第一2014年3月 移动开发大版内专家分月排行榜第一
2014年11月 移动开发大版内专家分月排行榜第二2014年4月 移动开发大版内专家分月排行榜第二2014年2月 移动开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 苹果app内存最大应用 的文章

 

随机推荐