V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
saveai
V2EX  ›  Android

安卓手机迷之内存

  •  1
     
  •   saveai · 74 天前 · 8341 次点击
    这是一个创建于 74 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我发现安卓手机,运行内存越大,已用内存就越多(好家伙能力越大责任越大是吧)。

    旧手机,8G 运存,开机后默认还有 3-4G 内存,开了几个普通应用后,还有 2.7G 可用。

    昨天到的新手机(真我 gt5 ),16G 运存+扩展了 4G ,我只开了个读书的 app ,然后?

    image

    虽然手机玩游戏之类的很流畅,但是会纳闷。 什么时候,安卓能做到,只让我允许的微信后台运行,其它的我打开后才占内存,我从任务管理里划掉了,那代表我不需要用了;不要再占内容、不要搞关联启动、不要后台自启、不要莫名其妙的突然弹窗(请卸载腾讯的应用宝,禁止通知和应用覆盖了还能弹,不知道什么原理),ok ?

    以及,什么时候可以透明一下,这些内存到底跑啥了,我从开发者模式里面看的感觉也不准啊。

    image2

    92 条回复    2024-03-29 13:50:43 +08:00
    maggch97
        1
    maggch97  
       74 天前 via iPhone   ❤️ 35
    安卓应该把这个内存显示删掉, 特别是在绝大部分人也无法正确理解这个数值之后

    苹果用户从来不会关心这个问题
    genkidesu
        2
    genkidesu  
       74 天前
    你说得对,但这就是 Android 现状...系统和第三方应用一起作恶。
    saveai
        3
    saveai  
    OP
       74 天前
    @maggch97 苹果系列比较喜欢 se ,但是性价比不高。。
    joh
        4
    joh  
       74 天前 via Android   ❤️ 3
    内存有剩余,不用又浪费,只要不影响其他软件运行就行了。那内存换性能也是个很好的方案。win 上在意内存是因为很多软件会把内存吃满导致其他软件无内存可用。
    jojo0830
        5
    jojo0830  
       74 天前   ❤️ 6
    厂家系统:我啥都要;
    升级内存后的厂家系统:我啥都要,我还要再私藏一点,安排给我的金主大大;
    大哥大应用:我啥都要;厂家系统:安排;
    二大哥应用:我啥都要;厂家系统:安排;
    平民应用:我只想保活发个通知;厂家系统:揍你哦~
    saveai
        6
    saveai  
    OP
       74 天前
    @jojo0830 哈哈哈呜呜呜😭
    qhx1018
        7
    qhx1018  
       74 天前
    那么问题来了,扩展内存有用吗
    ShuA1
        8
    ShuA1  
       74 天前
    内存管理方式不同,Linux ,unix ,甚至 mac ,都是尽量使用更多的内存。
    简单来说就是你关闭进程之后, 实际内存是没有释放的, 用于加速你下次打开应用。或者当内存不够的时候,再去释放。
    FengMubai
        9
    FengMubai  
       74 天前 via Android
    多退少补。系统先申请一半内存,运行中的应用多了就退一点内存给你,运行的少了就再补充一点内存
    Cloud9527
        10
    Cloud9527  
       74 天前
    内存就是拿来用的,不卡就行了。
    tgich
        11
    tgich  
       74 天前
    别太纠结,默认占用一半,你给安卓手机上 32GB ,一开机也是 16GB 没了,内存就是买来用的,不够用了系统会调节
    gesse
        12
    gesse  
       74 天前   ❤️ 19
    新生代真的计算机基础越来越差了,还整顿职场。
    fredweili
        13
    fredweili  
       74 天前
    内存不用,留着看的么?
    KookSpookk
        14
    KookSpookk  
       74 天前
    gt5 你升级系统一下,出厂版本有内存统计错误。不过这个内存使用无所谓吧,我都关掉不看的。
    zhwguest
        15
    zhwguest  
       74 天前
    @joh 最主要,PC 用户一般需要刻意关注自己的程序运行情况,也就是说先运行的程序具有较高优先级,不能随意中断其他程序的运行,否则可能带来严重后果。可以认为,内存管理是丢给用户自己的。就比如内存不足了,用户需要自己选择关闭某些程序。用户潜意识里也会关掉不需要的程序。
    而手机用户一般无需或者也没有能力关注自己的应用运行情况,往往是新运行的应用具有较高优先级,所以不是关键的系统级应用,越早运行的往往越容易被杀掉。也就是说,内存管理是手机操作系统来主宰的。为了方便用户,尽量不将所有应用都保留,方便用户切换,所以就尽量全部用掉。
    当然,这些是理想情况,实际情况是那几个大户,一上来就呼哧呼哧全部吃掉,反正不用白不用。
    joh
        16
    joh  
       74 天前 via Android
    @zhwguest 是啊。设计本身是存在合理性。但是再完善的规则也限制不了流氓们的行为。
    Dumet
        17
    Dumet  
       74 天前 via Android   ❤️ 4
    早年间最近任务界面显示内存占用跟巨大的清理图标以及国内厂商宣传开机内存剩余量我就觉得挺愚蠢的,没想到如今还有人在意这个,Google 自家的手机或者 AOSP 从来都不会在最近使用的页面加内存使用量,而且按照 Google 的设计规范将软件从最近使用刮掉也并不会完全结束软件运行,有这种想法不光是对安卓不了解同时也对 Linux 缺乏认知。Linux 也差不多一样的情况,反正个人使用从来都没在意过内存占用也从来不主动去刮最近使用页的软件,除非用了见光社死的软件才会主动刮掉。对于安卓或者 Linux 来说开机占一半就是合理的且和国产流氓软件无关。
    Dumet
        18
    Dumet  
       74 天前 via Android
    只能说整个国内的安卓环境过于畸形,app oem 以及用户都有问题,app 不按照 Google 的开发规范耍流氓 oem 为了防止 app 耍流氓所以必须比 app 更流氓 用户在这种环境下对安卓本应该有的样子完全缺乏认知
    jianrenjun
        19
    jianrenjun  
       74 天前
    windows 也一样啊
    winterbells
        20
    winterbells  
       74 天前
    虽然但是。。。

    12G 内存 一开始是默认+4G 拓展内存,前几天从微信小程序切换到高德地图,切回来发现小程序消失了,切回高德,地图就刷新回到当前位置。重复试了几次都复现了,还以为是什么 bug 导致的。

    把内存显示打开发现只有 2.1G 可用(小程序还没被杀掉),一共就算四个前台程序,微信+小程序+微信双开+高德。我能理解内存占用,但不能理解内存都用哪儿去了
    Flourite
        21
    Flourite  
       74 天前
    同意一楼

    现代系统不管你有多大内存都会给你用掉,用来缓存一些文件之类,这是很正常的行为,你下次打开或者搜索速度就很快

    你老是关注这些 cpu 、内存之类的东西只会给自己压力,一点意义都没有。你问问你现在是手机为人服务还是你在服务手机
    shenhualv7
        22
    shenhualv7  
       74 天前 via Android
    楼上说的内存我懂,但为什么手机系统既要自动清后台,还不能根据内存使用情况提前获知
    ShadowPower
        23
    ShadowPower  
       74 天前   ❤️ 1
    换 iPhone 吧
    内存一直都是满的……
    虽然 iOS 不让你看,但你可以用第三方工具查看
    koto
        24
    koto  
       74 天前
    内存就是这样的话,这就是内存要干的活不是?
    当然先排除国内手机厂商把储存称呼为内存这个事情。

    我也觉得确实可以淡化内存这个概念,前提是也不要把储存称呼为内存了。
    koto
        25
    koto  
       74 天前
    *内存就是这样的吧
    jZEdn7k4
        26
    jZEdn7k4  
       74 天前
    苹果也一样啊,我 mac 64G 内存,就打开了浏览器,word 和几个小软件,用 32G ,另一台 mac 8G 内存,打开同样的东西就用 6G ,这东西空着纯浪费吧,现代操作系统基本都是默认拿来缓存提高切换速度吧
    JensenQian
        27
    JensenQian  
       74 天前
    你都 16G 了
    内存扩展直接关了
    Recle
        28
    Recle  
       74 天前
    首先,并不是空闲内存越多越好。反而是后台占用内存的应用越多,你再次启动他们时间越快。但同样的,这样会导致很多 APP 驻留在后台影响耗电。
    什么?你问我怎么解决?我用 iPhone 。
    Shinu
        29
    Shinu  
       74 天前
    win11 也是一样的
    villivateur
        30
    villivateur  
       74 天前
    内存就是拿来用的,卡不卡跟内存剩余没关系。没被用到的内存就是浪费。
    okakuyang
        31
    okakuyang  
       74 天前 via iPhone
    就是安卓系统垃圾,别扯什么预热应用。之前被一个人怼说微信 app 预热到内存里,我 tm 测试手机压根就没有装微信,类 asop 系统,4g 占用 3g 。相反 iOSapp 能吃到总内存四分之三,基本上系统只要 500m 到 600m 内存。
    Dumet
        32
    Dumet  
       74 天前 via Android   ❤️ 2
    对于内存还有很多软件被杀后台或者才使用的软件切换一下被杀只能说这就是国内的 oem 耍流氓,其实按照安卓的开发规则软件会不会被杀后台很大程度是软件自己决定的,安卓 app 后台驻留是根据软件用途以及对后台的依赖程度由 app 开发者自行决定后台驻留的优先级,系统会根据软件自行申明的优先级从低优先级的软件开始释放内存,除非内存实在不够用例如运行超大型游戏系统才会释放掉高优先级的软件所占用的内存,国内流氓软件是肯定不会按照 Google 的软件开发规范来开发软件的,不光乱申明优先级还搞链式启动导致 oem 也不可能按照软件自己的申明来释放内存否则正常软件都不要用了内存全部被流氓软件抢光,当然这个过程肯定就不可避免的会导致误伤,在加上对极度省电的执念导致雪上加霜,最后的结果就是软件本身的优先级申明在国内的 ROM 上形同虚设按照 Google 的软件开发规范开发软件的开发者和用户都成了受害者
    AllenTsui
        33
    AllenTsui  
       74 天前
    其实这个是用户的心理洁癖吧,实际上你完全不用担心这个问题,我给你看下真实的数据。
    这个是我的三星 s20 手机,8G 内存的版本。用 adb shell df -h 命令查看一下 [硬盘] 占用,很明显一个 tmpfs 占用了 5G 多。
    PS C:\Users\Administrator> adb shell df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/block/dm-4 5.4G 5.4G 28M 100% /
    tmpfs 5.1G 2.1M 5.1G 1% /dev

    这玩意儿就跟 ramdisk 内存硬盘原理很像,划分一块内存作为硬盘来用,存储临时文件,加速你的系统。当你剩余内存不够时会把没用到的腾出来给其他进程用。
    Huelse
        34
    Huelse  
       74 天前
    linux 上有个经典设计叫 swap ,你应该也了解,ios 和 android 也都有类似机制。
    抛开应用本身问题,如果你开的应用很多但内存又不够,很大可能系统会把一些不活跃的应用移到 swap 上,内存充足的情况下就没必要了,所以就出现了你的问题。
    imzcg2
        35
    imzcg2  
       74 天前
    没用 16g 照样卡死,照样杀后台,我曾经测试能开多少个 app,开了一堆后手机烫的不能行,那时我就知道噱头而已,一般 12g 够使用了
    june4
        36
    june4  
       74 天前
    @okakuyang 麻烦有点 linux 常识,所有空闲内存都会用于缓存。比如你读过了一批文件,会发现即使程序关了内存也没回来,因为缓存了啊,这部分缓存和空闲内存是等价的。
    rockxsj
        37
    rockxsj  
       74 天前
    内存就是拿来用的啊 同意楼上说的把这个去掉不显示,用户只要关注程序运行和切换是否流畅即可,不用关注内存这种”底层“的东西
    r0sevil
        38
    r0sevil  
       74 天前
    这让我想起前几天打印店老板电脑上那个 360 加速球
    shonnliberty
        39
    shonnliberty  
       74 天前 via Android
    看内存占用 在设置菜单搜 running servers ,pixel3xl 系统 Android14 ,4G 内存还剩一点。
    https://imgur.com/tBhAeRB
    Sosocould
        40
    Sosocould  
       74 天前
    这就是 V2EX 用户的平均水平←_←
    leaflxh
        41
    leaflxh  
       74 天前
    @maggch97
    md 魅族已经删了内存显示
    NickX
        42
    NickX  
       74 天前
    有 100G 也给你占光,先占了再说
    ON9
        43
    ON9  
       74 天前 via Android
    总之我 4g 手机和 8g 能开的软件一样多😅,现在后台 qq 微信毕站微博,再打开一个软件就大概率杀后台了,打开两个必杀😅😅
    miaosl
        44
    miaosl  
       74 天前
    @maggch97 实际上大多数手机默认没有这个内存显示
    Greendays
        45
    Greendays  
       74 天前
    @shenhualv7 自动清后台是为了省电。至少小米的系统是可以设置成不主动清后台的。
    yanyumihuang
        46
    yanyumihuang  
       74 天前 via Android
    @jojo0830 发通知请使用官方渠道。hwpush mipush OPPO push vivo push fcm 。而不是自己在后台保活
    maokg
        47
    maokg  
       74 天前
    @ShuA1 墓碑机制
    SkywalkerJi
        48
    SkywalkerJi  
       74 天前 via Android
    @jianrenjun
    Windows 并不会吧。我 256g 内存,开机基本上就 10g 的样子,平时很少有超过 30g 的。
    laqow
        49
    laqow  
       74 天前
    感觉把安卓和其他 linux 发行版摆在一起比不公平吧,很多设计和拍屁股想出来的一样,安卓留了相当大的可升级空间
    w950666
        50
    w950666  
       74 天前
    在内存充裕时充分使用内存提高 io 效率, unix 和 linux 的内存管理就是这么设计的, 你有洁癖的话可以 root 后手动限制 app 的内存占用
    Bingchunmoli
        51
    Bingchunmoli  
       74 天前 via Android
    @winterbells 微信小程序 bug ,举个例子 关闭小程序 wx 也会被杀,
    chrawsl
        52
    chrawsl  
       74 天前
    新版安卓会更积极的用内存当做缓存,来优化性能,旧版安卓不会这么干所以剩余内存会更多一点,实际上你开 1 个和 10 几个 app 可能也剩这么多内存,感觉没必要过度关心内存
    SenLief
        53
    SenLief  
       74 天前
    内存这么大不用留着浪费吗?为什么要杀死 app ,直接后台多好,随时随地的拉起来。
    SenLief
        54
    SenLief  
       74 天前
    @winterbells 你这个是被系统杀死了应该。
    wangtian2020
        55
    wangtian2020  
       74 天前
    内存这么便宜这么大,不用不是浪费,把硬盘(闪存)文件系统动画全部常驻内存不是挺好的做法
    早给推动推动大内存电子设备流行了
    736531683
        56
    736531683  
       74 天前
    @gesse 科班至少不会讲这些玩意的( who care 安卓的内存缓存策略),拿这个开嘲是不是说明你...
    codingguy
        57
    codingguy  
       74 天前
    内存不就是有空余就继续分配,不够用了再回收。回收动作也是有开销的呀
    shonnliberty
        58
    shonnliberty  
       74 天前 via Android
    Redmi Note12turbo 12G 还剩不少内存。
    vmebeh
        59
    vmebeh  
       74 天前
    jiangyang123
        60
    jiangyang123  
       74 天前
    我只关心 :如果我想把一个 app 保持存活,系统能否坚持到关机重启才关闭它

    而不是一会就把它冻结了,再次打开时还要重载
    sakisaki
        61
    sakisaki  
       74 天前 via Android
    你的理解和安卓的实际机制不同,
    上面有人说清楚了,即便有一万兆内存,它也会先扣五千兆拿来用,虽然它实际用不了五千兆,可你看到的结果是只剩五千兆了。
    jiangyang123
        62
    jiangyang123  
       74 天前
    比如 浏览器我带开了 n 个页面,切换到后台之后,打开的网页都在,甚至我之前填的表单内容都在
    goodryb
        63
    goodryb  
       74 天前
    同意一楼的说法,我买了 16GB 内存,不用放着吹灰吗, 只要系统流程,后台不乱杀应用,系统想怎么用就怎么用
    Sk8erBoi
        64
    Sk8erBoi  
       74 天前
    我觉得应该用同一型号,不同内存配置的做对比
    winterbells
        65
    winterbells  
       74 天前
    @Bingchunmoli 应该不是 bug ,切回高德地图也会刷新。微信本身并没有被杀,应该是系统白名单的原因。
    XXWHCA
        66
    XXWHCA  
       74 天前
    这个东西就和系统更新的进度条为什么不准确一样,并不是程序优先考虑的事情,而且内存占用多是有好处的,程序开发中最重要一点就是速度,系统通过缓存比较常用的一些资源而提高软件的加载速度,通俗点就是空间换时间。而缓存空间的大小通常都是按照最大内存的百分比来计算的,所以内存越大缓存占用的空间也就会更大。而且这部分缓存空间也并不是被浪费掉了,如果在打开对内存要求较多的软件,系统也会释放一部分资源来保证大内存软件的需求。软件的运行并不是内存可用空间越大就越快的,通常会适得其反,因为磁盘速度和内存速度对 CPU 来说还是太慢了,每次都从硬盘加载资源反而会更慢,同时也会消耗更多的电量。所以没必要频繁杀后台,Android 从来就没有教用户频繁杀后台,因为对于现在的硬件性能来说没有意义的,而且空白的内存和装满的内存重量和耗电是一样😂
    x86
        67
    x86  
       74 天前 via iPhone
    国产 App:能力越大,地盘越大
    ShirolinEX
        68
    ShirolinEX  
       74 天前
    还在用 4GB 内存呢…不去关注不影响使用
    wk333
        69
    wk333  
       74 天前
    只要不多费电 不卡,随便占用
    KorenKrita
        70
    KorenKrita  
       74 天前
    @yanyumihuang 微信表示 除了 ios 没有一个能让我低头的 你安卓厂谁敢不给我保活就等着被自己家用户冲烂吧
    Bingchunmoli
        71
    Bingchunmoli  
       74 天前 via Android
    @winterbells 我的切换微信是唯心杀,其他不杀,氧, 国内系统不杀微信是因为白名单
    zisen
        72
    zisen  
       74 天前 via iPhone
    @yanyumihuang 开发者:懒得适配,后台放个无声音频一行代码就解决了。
    Mikakunin
        73
    Mikakunin  
       74 天前 via Android
    @qhx1018 没太大用,可以关掉
    flyqie
        74
    flyqie  
       74 天前 via Android
    请注意,你用的是移动设备,不要把 PC 的那一套资源管理思维直接套上去。

    并且,敢问你 PC 端用的是什么版本的什么操作系统?
    snugness
        75
    snugness  
       74 天前
    是国产 OS 的通病。我两台 K40 12G ,用 MIUI 改版,挂两个微信的占用 5.2G ,什么都没挂的占用 3.7G ,什么扩展内存全关掉。如果用 AOSP 占用能更少。
    hongns
        76
    hongns  
       74 天前
    Linux 系统的内存管理原则: 没有使用的内存,都是被浪费的。
    xiangbohua
        77
    xiangbohua  
       73 天前
    保证续航的情况下,内存使用合理的情况下,内存占用越多越好啊,花钱买了内存不用,是不是亏了。。。
    顺便吐槽一下 iOS 杀后台是真的频繁
    HangoX
        78
    HangoX  
       73 天前
    内存这个东西只要开机就会耗电,你用多少都是一样的,所以厂商更倾向于用起来,不够再吐出来,比如缓存几个应用,让你打开更快。
    至于楼主,担心的不是内存问题,而是应用在缓存后还在运行的问题,应用很多在后台其实是被冻结的,不会执行的,这个点你放心
    LANB0
        79
    LANB0  
       73 天前
    @june4 然而 Linux 算可用内存是包含缓存的,这部分缓存是可以由系统随时拿来给任意进程用的,为啥到了安卓这里,已用内存是含缓存呢?有没有可能系统和那些大应用确实是实际占用了这么多,而不是仅仅是缓存没释放。
    saveai
        80
    saveai  
    OP
       73 天前
    @koto #24
    @XXWHCA
    @HangoX
    @wk333
    @chrawsl

    看了大家的评论,我觉得可能我存在一个误解,那就是“内存使用多少,对手机的功耗实际上没有影响”?
    但是为什么很多手机,都会提示
    ”某某应用在后台偷偷耗电,某某应用耗电严重“,以及提供清除后台加速的功能,不都是为了清除资源占用来减少功耗吗?

    作为一个仅使用手机的普通大众用户,我其实并不关心划出来展示的是内存还是什么,我更在意的是我手机整体功耗的占用。但是没办法,能够调出来的,数据化的内容只有“8.78G 可用|16.0+4GB”。
    所以我(包括正常用户),都会下意识的理解为,手机目前的功耗状态是这样的,所以会觉得,我就打开一个应用,怎么占用这么高。

    毕竟正常的理解,就是功耗越大,耗电越快不是吗?带动 1G 运存应用的耗电,和带动 10G 运存应用的耗电,应该不一样吧。就像电脑那样,风扇速度越快,或者 cpu 占用越高,耗电越高。

    所以我会希望,我不在意的那些软件,比如我曾经打开过高德地图,是为了导航,或者打车回去,那我导航完了,到家了,我一划,关闭掉了它,那就不要再运行了,我也没必要让你预热它,一直占用着内存。等我需要的时候,我再打开,否则的话,我打开过 N 个,就缓存了 N 个,这个逻辑不合理吗...
    yc8332
        81
    yc8332  
       73 天前
    安卓内存多大都不够用。。前几年 8G 12G ,现在随随便便 16G 。。。都赶上电脑了。。
    XXWHCA
        82
    XXWHCA  
       73 天前
    @saveai #80 这只是一个误区,耗电的并不是内存占用多少,耗电的而是占用内存的进程。这些进程可能是国内大厂的流氓软件,这些进程在后台运行时会消耗 cpu 资源和网络资源,这些都是耗电大户。所以会给用户一个内存占用越高越费电的误区,也让 Android 和系统厂商想尽办法阻止这些进程在后台长时间运行,提高进程后台运行的门槛,要想后台运行必须改为前台服务,另外在 Android13 之后会直接在通知栏提示用户:xxx 应用在前台运行。所以现在的 Android 系统想后台默默运行,或者进程之间相互唤醒,已经成了过去式,所以大部分情况下是不用杀后台的。但是针对国内这些流氓软件,最好的办法还是杀掉,拼多多,应用宝这些是不配活着的
    yellowbean
        83
    yellowbean  
       73 天前
    app 看碟下菜
    识别机型高端机
    系统动画 app 动效啥的都拉的很满,不介意特效下降的情况下你可以尝试机型伪装低端机 说不定有奇效
    abaabaooo
        84
    abaabaooo  
       73 天前 via Android
    只要不卡,管他内存用多少呢
    wanwaneryide
        85
    wanwaneryide  
       73 天前
    从 256M 内存开始,直到 16G ,内存开机剩一半
    sw926
        86
    sw926  
       73 天前 via Android
    应该是缓存的问题吧,比如使用 lru cache ,一般上限设置为可用内存的 4 分之一,可用内存为 12g 的时候打开一个 App ,这个 App 的缓存就可能占用 3g 。同理,可用内存为 1g ,这个 App 的缓存就只能占用 250M 。像微博这种图片多的应用,大内存的能缓存的图片多,刷起来就更流畅。
    ZXiangQAQ
        87
    ZXiangQAQ  
       73 天前
    安卓底层也是类 linux 吧,linux 一般会有 buff/cache 作为缓冲提高系统性能,即使系统空跑,也会占用不少,但是这些空间只是系统临时拿来用的,如果应用申请新内存时,如果内存不够用,会释放一部分出来,所以真实的可用内存其实是 buff+cache+free
    lichihsieh
        88
    lichihsieh  
       73 天前
    手机计算 ram 恐怕都不太准,这就是为什么 iphone 不会直接向用户展示 ram 的使用情况吧
    chrawsl
        89
    chrawsl  
       72 天前
    @saveai 那是在后台有活跃进程,安卓 12 还不是多少加入了类似 ios 的墓碑机制,应用退出以后内存会有缓存,下次冷启动会更快,但是实际上应用的后台已经被杀死了。

    内存实际上你用 1G 和用满功耗差别不大的,反而是这种更积极使用内存减少闪存读写的策略更加省电
    sir283
        90
    sir283  
       72 天前
    首先,不管是安卓还是 iOS ,甚至是 Windows 、Linux ,都是保持着,物尽其用的原则,内存是一定会用尽的,但是,系统该用多少内存、应当留给用户多少内存,这个是由产商、系统定制者决定,在同等系统自启程序数量相同的情况下,现在国内定制版安卓系统的内存占用,比 Windows 、Linux 、iOS 都要高,这是因为国内的软件厂商偷懒,采用 flutter 、electron 等这种前端框架进行系统应用开发,而且大部分都没有做对应的优化,导致每一个应用一启动,都相当于启动了一个完整的 chrome 浏览器,一来二去,内存就被消耗殆尽了,但是为什么 Windows 的 16g 内存或者 8g 内存,乃至 4g 仍然可以正常愉快的玩呢?正是因为 Windows 的大部分软件都是采用原生或者有优化的 qt 、mfc 这种框架进行开发,可以得到有效的约束,而如果将 Windows 的软件都换成 electron 、flutter 这种前端框架来开发呢?那这只会比安卓更加严重、更加灾难,所以,不是安卓太占内存,什么一开机就吃一半,本质上还是厂商和系统定制者来决定的,安卓有一个 go 版本,那个内存占用更是低至 512MB ,足以说明,这不是系统的问题,我的那台联想 k30-t 就有安卓 go ,开机内存占用不到 1GB ,我之前那台红米 note9 4g ,6+128 的配置,刷一个安卓 12 的类原生,开机内存也不会超 2G ,开启 GO 参数,内存占用不到 1GB 。
    azusematsuri
        91
    azusematsuri  
       63 天前
    内存终究只是存储,就算存了程序的代码段、数据段、堆栈,最后还是要取到 cpu 里去执行,cpu 执行才是耗电的
    所以某某后台应用在后台耗电,主要是一直在后台唤醒 cpu 调用 cpu ,导致的耗电
    占用内存本身不会耗电,就像你手机多存一张照片不会就多耗电一点
    但是因为程序在内存中往往等于程序正在运行(大部分情况也就是如此),所以对占内存==占用 cpu==耗电错误的划上了等号
    其实现在很多国产厂(包括谷歌)在做的是限制程序在后台不活跃时调用 cpu 的频率,这个又比较复杂,限制太死程序会崩溃、收不到推送,限制太松就是后台任务太多手机太卡太耗电
    总之手机里直接看的内存不太准,推荐进 adb shell 用 top 命令看 res 块,直接看每个进程的 res 大小,我这看微信几个进程加起来 1g 左右,qq 加起来 500m 左右
    ![]( https://azusebox.moe/wp-content/uploads/2024/02/屏幕截图-2024-02-10-014852.png)
    crabor
        92
    crabor  
       14 天前
    内存低的话会更早的触发内存回收,触发内存回收的指标是水位线( watermask )。如果把系统剩余内存看做水位的话,Linux 会设置三个水位线 hign 、low 、min ,内存低于 low 线时触发异步回收进程 kswapd ,内存低于 min 线时触发同步回收,假如内存通过同步异步回收始终没发回到 min 线以上,那么就会触发最终内存回收杀器 OOM ( out of memory )机制强行杀掉占内存较多的进程。这三个线和系统总内存是大致呈比例关系的,假设 low 线是 1/2 ,8G 手机当系统剩余内存小于 4G 的时候就会进行内存回收,将文件页释放掉(如果是脏页则需要提前刷盘)、将匿名页回收到磁盘的 swap 分区,而 16G 手机就会在剩余内存低于 8G 的时候才会进行内存回收。16G 手机相对于 8G 手机的优势则在于系统响应更快(因为在某些区间里面没有进行内存回收,所有数据都在内存里,而不像 8G 手机还需要重新从磁盘加载一遍)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2424 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 01:08 · PVG 09:08 · LAX 18:08 · JFK 21:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.