安卓手机迷之内存

2024 年 1 月 29 日
 saveai

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

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

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

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

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

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

内存实际上你用 1G 和用满功耗差别不大的,反而是这种更积极使用内存减少闪存读写的策略更加省电
sir283
2024 年 1 月 31 日
首先,不管是安卓还是 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
2024 年 2 月 10 日
内存终究只是存储,就算存了程序的代码段、数据段、堆栈,最后还是要取到 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
2024 年 3 月 29 日
内存低的话会更早的触发内存回收,触发内存回收的指标是水位线( watermask )。如果把系统剩余内存看做水位的话,Linux 会设置三个水位线 hign 、low 、min ,内存低于 low 线时触发异步回收进程 kswapd ,内存低于 min 线时触发同步回收,假如内存通过同步异步回收始终没发回到 min 线以上,那么就会触发最终内存回收杀器 OOM ( out of memory )机制强行杀掉占内存较多的进程。这三个线和系统总内存是大致呈比例关系的,假设 low 线是 1/2 ,8G 手机当系统剩余内存小于 4G 的时候就会进行内存回收,将文件页释放掉(如果是脏页则需要提前刷盘)、将匿名页回收到磁盘的 swap 分区,而 16G 手机就会在剩余内存低于 8G 的时候才会进行内存回收。16G 手机相对于 8G 手机的优势则在于系统响应更快(因为在某些区间里面没有进行内存回收,所有数据都在内存里,而不像 8G 手机还需要重新从磁盘加载一遍)
aquablue
2024 年 4 月 30 日
无限膨胀的内存说明了应用生态的畸形发展,做加法很简单,做减法不易。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1012306

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX