为啥 Android studio 开发的 hello world 程序都可以占用内存 100MB?

2021-12-07 11:05:01 +08:00
 weixiansen574
请问为啥?我也只是直接创建了一个 HelloWorld 项目,没有加任何代码进去,直接打包放到手机里运行就占用运行内存 100MB ? HelloWorld 程序的安装包就 2MB 大小了,人家 via 浏览器都不超过 2MB ,我一个 HelloWorld 就比人家浏览器大了!怪事,难道 Android studio 加了什么奇怪的东西进去吗?
9414 次点击
所在节点    Android
30 条回复
zachlhb
2021-12-08 08:05:45 +08:00
用 kotlin 语言开发,Java 相当耗内存
okakuyang
2021-12-08 09:06:53 +08:00
也不算啥,ios 那边稍微写点代码也占 20 多 M 。
yinzhili
2021-12-08 09:16:49 +08:00
@lloovve 然后 2g 内存的手机价格反而更高,消费者觉得自己赚了,厂商也赚了,双赢
dddddd
2021-12-08 15:15:34 +08:00
大部分是共享的内存,去了解一下 zygote 启动过程
hatcloud
2021-12-08 16:39:29 +08:00
@zachlhb ???
Kotlin 和 Java 写的,最后编译完后不都是一样的字节码吗?会有什么区别?
zachlhb
2021-12-08 17:07:15 +08:00
@hatcloud 不一样,我用 flutter 试过,分别用 Java 和 kotlin 创建默认 demo 项目,打包后测试,kotlin 就是比 Java 的占有资源少很多
4kingRAS
2021-12-08 17:16:02 +08:00
安卓上的 java 程序每个进程都是一个 zygote 生的虚拟机,每个虚拟机会均摊所有应用可能用到的共享内存。这是内存紧张的设备上非常好的策略,对于单个 App ,哪怕没做什么内存也很大。但是对于整个系统,内存是不变的。

我这几天正在做安卓内存优化,20M 优化到 13M ,安卓上哪怕一个空壳进程都要占用 8 ,9M 左右。如果想再精简,那就只能写 native 程序。
hatcloud
2021-12-10 14:20:22 +08:00
@zachlhb 我觉得可能是两者的优化上做的不太一样。毕竟 Google 可能对 Java 语言都不太上心了。
john6lq
2021-12-16 10:45:44 +08:00
@zachlhb 我怎么没看懂呢,Flutter 试过 Java 和 Kotlin 创建项目? Flutter 在这是起什么作用?混合开发?
zachlhb
2021-12-16 12:40:33 +08:00
flutter 是开发框架,主要语言是 dart ,可以直接开发 app ,web ,桌面应用,对于 app ,你可以使用 flutter 的组件来开发跨平台的功能,也可以使用某个平台的语言直接开发,对于安卓你可以选择使用 java 还是 kotlin 作为安卓的语言

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

https://www.v2ex.com/t/820554

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

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

© 2021 V2EX