一个 Android APP 占用多少内存以内算性能良好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Prothunder
V2EX    Android

一个 Android APP 占用多少内存以内算性能良好

  •  
  •   Prothunder 2015-05-06 08:58:04 +08:00 22278 次点击
    这是一个创建于 3828 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果图片很多,50M算不算合理?还是说有其他的评判维度呢?

    18 条回复    2015-05-22 22:16:30 +08:00
    xpfd
        1
    xpfd  
       2015-05-06 09:12:46 +08:00   1
    对于java程序来讲,内存从来就是the more the better
    Prothunder
        2
    Prothunder  
    OP
       2015-05-06 09:15:39 +08:00
    @xpfd 总内存当然是the more the better,但是单个程序的内存应该是the less the better
    zhaoxiting1997
        3
    zhaoxiting1997  
       2015-05-06 09:17:47 +08:00 via Android   1
    非浏览器,游戏的话,50M可以接受,超过100M无法接受(运行时),后台时最多50M,太多就找精简版的或禁止后台了
    c742435
        4
    c742435  
       2015-05-06 09:32:19 +08:00   3
    前台 占用几百兆都无所谓,只要不出现崩溃;
    后台占用,哼哼,20m就浪费
    kyze8439690
        5
    kyze8439690  
       2015-05-06 09:39:14 +08:00   1
    是屏幕像素而分,像我用nexus5一般在五六十m浮动,而且重复打开关闭activity不会泄露。
    CtrlSpace
        6
    CtrlSpace  
       2015-05-06 09:40:38 +08:00   1
    超过100MB 开始,性能较差的机子就会开始卡顿了
    Prothunder
        7
    Prothunder  
    OP
       2015-05-06 0:43:05 +08:00
    @CtrlSpace 100M,允许的空间还是挺大的
    holmesabc
        8
    holmesabc  
       2015-05-06 09:43:43 +08:00   1
    微信一个进程120M
    mthli
        9
    mthli  
       2015-05-06 09:48:33 +08:00   1
    内存变化平缓比较好,如果出现大范围GC的话体验肯定不好。
    morethansean
        10
    morethansean  
       2015-05-06 09:57:30 +08:00   1
    同4L,前台你爱咋地咋地,只要不崩溃别卡出翔……
    后台进程上了10mb 都看不惯……特别在一群有些时候根本就显示0MB 的用 GCM的程序堆里出现一个在后台一直站着几十 MB 的 APP 时,就真的很烦躁……
    pomelom
        11
    pomelom  
       2015-05-06 17:07:55 +08:00
    @zhaoxiting1997 微信QQ100以上妥妥的..
    allan1st
        12
    allan1st  
       2015-05-06 18:56:05 +08:00   1
    感觉你们都走到了误区里去了,Android App 质量不是以占多少内存 来衡量的,内存是系统分配的,给你多少你就有多少;好的 app 是在系统给你 30m 内存和 130m 内存的时候都能很好的平衡性能,而且能在 app 切到 background,并且系统有需要的时候释放这部分内存。
    allan1st
        13
    allan1st  
       2015-05-06 19:17:55 +08:00   2
    另外科普一下 Android 内存和 GC Bitmap 等知识,浅见,如果有错误请指出:
    比方说你的 Android App 需要显示一张图,计算简单就算它 1024*1024 像素,这张图的 Bitmap 在内存里面占用 2M (RGB565)和 4M (RGB8888),只要这张图片还在屏幕上显示,那么它必须存在内存里;反之不然:bitmap 会继续保持在内存里,这样你下次要显示这张图片就会一下子读取出来,因为内存是非常快的。如果 App 需要更多的内存怎么办,Android 的 Delvik/ART 会做一次 GC,回收那些已经移出屏幕外边的 bitmap,因此你就有更多内存可以读取新图片了。
    那么什么时候会崩溃和卡呢?
    1. 卡:
    图片太大或者太密集,导致频繁的 GC:Android 的 GC 是 stop the world 的,主线程也会因此受到阻塞,如果阻塞时间大于 16ms (60分之一秒),那么就会掉帧,也就是卡。
    另外和系统也有关系:
    三星 Galaxy S4 内存1G。最新系统好像是 4.1。一次 GC 居然要用20ms 以上,每个 App 基本只有 50m 左右分配到的空间,那么必须卡。
    Moto G 1st gen 内存1G。最新系统 Android 5,用的 ART,一次 GC 只有 2-5ms,而且每个 app 可以分到 60 - 80M 左右,看上去流畅的像飞一样。
    2. 崩溃
    有些垃圾程序员不知道 ListView/RecyclerView 可以回收重用,或者自己写了个很差劲的 Cache,或者很多 Activity 内存泄露,那么可用的内存就越来越少,等到真的要用内存的时候就不够了,这样就会 out-of-memory 了,也就是奔溃了。

    一个优秀的 app 是不可能你切换到后台后还在 Running 里面看到占用几十一百M 的内存的;它只会出现在 Cached Processes 里面,这是系统随时可以回收的部分。

    希望能够帮助你们判断 App 到底好不好,而不是看到一个图片为主的 app 达到了100M 就认为它流氓。
    zhaoxiting1997
        14
    zhaoxiting1997  
       2015-05-06 20:17:21 +08:00 via Android
    @pomelom 所以我微信有coolapk上的去后台老版,QQ只用国际版
    Prothunder
        15
    Prothunder  
    OP
       2015-05-07 08:44:28 +08:00
    @allan1st 非常感谢,学到不少
    shaobin0604
        16
    shaobin0604  
       2015-05-14 14:45:31 +08:00
    感谢 @allan1st ,另外指出一个问题,Galaxy S4 的 ram 是 2g
    allan1st
        17
    allan1st  
       2015-05-14 15:15:37 +08:00 via Android
    @shaobin0604 不是内存说错了,是型号,s3 1g RAM版本。谢谢。
    dast
        18
    dast  
       2015-05-22 22:16:30 +08:00
    @zhaoxiting1997 国际版,好多BUG
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3512 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:23 PVG 12:23 LAX 21:23 JFK 00:23
    Do have faith in wha you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86