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

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

  •  2
     
  •   weixiansen574 · 166 天前 via Android · 5228 次点击
    这是一个创建于 166 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问为啥?我也只是直接创建了一个 HelloWorld 项目,没有加任何代码进去,直接打包放到手机里运行就占用运行内存 100MB ? HelloWorld 程序的安装包就 2MB 大小了,人家 via 浏览器都不超过 2MB ,我一个 HelloWorld 就比人家浏览器大了!怪事,难道 Android studio 加了什么奇怪的东西进去吗?
    30 条回复    2021-12-16 12:40:33 +08:00
    461da73c
        1
    461da73c  
       166 天前   ❤️ 1
    JAVA 不就这个德行吗?
    misdake
        2
    misdake  
       166 天前   ❤️ 1
    安装包里面可以看看体积分析,根据我 n 年前做 android 的印象可能是带了 support 库或者是图标图片等太大。
    HongJay
        3
    HongJay  
       166 天前   ❤️ 2
    别人那叫优化。你那叫初学
    NathanDo
        4
    NathanDo  
       166 天前
    你到底是比内存占用还是安装包呢,via 也就一个 webview 安装包小有什么稀奇的
    lloovve
        5
    lloovve  
       166 天前 via iPhone
    Android 8g 内存和 ios 2g 内存一个等级
    mxT52CRuqR6o5
        6
    mxT52CRuqR6o5  
       166 天前   ❤️ 1
    我把 via 清空数据,初次运行,内存占用 125MB
    AoEiuV020CN
        7
    AoEiuV020CN  
       166 天前   ❤️ 1
    主要是兼容,compat ,安卓为了兼容各种版本,单纯一个默认主题就依赖了一个 androidx 库,
    现在的 activity 都是 AppCompatActivity ,放弃兼容删除依赖还是可以写出几十 kb 的 app 的,
    winterbells
        8
    winterbells  
       166 天前
    apk 直接拖到 Android Studio 窗口看大小
    另外 gradle 里把压缩混淆也打开
    missdeer
        9
    missdeer  
       166 天前 via Android   ❤️ 2
    兵马未动,粮草先行。
    WebKit
        10
    WebKit  
       166 天前 via Android   ❤️ 2
    直接运行的是 debug 肯定比 release 大,debug 包还有各种 test 的依赖。
    Mrshe
        11
    Mrshe  
       166 天前
    via 裁剪了很多东西,hello world 里面你又没优化
    zongren
        12
    zongren  
       166 天前
    不是 java 虚拟机的锅吗
    lakehylia
        13
    lakehylia  
       166 天前
    你这是新手教程,新手还会优化?
    crayygy
        14
    crayygy  
       166 天前
    1. debug 包比 release 要大很多,先设置成 release 看看,一般不会很大
    2. 创建默认项目的时候会带一堆 support library 的依赖,这些依赖也不少,gradle 里面删一下,重新编译一下看看
    3. 图片应该不会很多,自带的都是矢量图,不应该很大,所以这块可以不用看了
    huruwo
        15
    huruwo  
       166 天前
    via 各种极限优化 而且尽量不用整体的第三方库
    youxiachai
        16
    youxiachai  
       166 天前
    有点迷? 第一次搞客户端开发? 为啥会问这种问题
    sankemao
        17
    sankemao  
       166 天前
    把各种用不到的依赖去掉,可以压缩到十多 k
    kwanzaa
        18
    kwanzaa  
       166 天前
    还没 release 带着一堆 debug 分析工具。 运行时也没优化。这么大不奇怪。
    fox0001
        19
    fox0001  
       166 天前 via Android
    不要跟 via 比,真的
    fan123199
        20
    fan123199  
       165 天前
    楼主应该更好奇内存占用,不是安装包大小。其实涉及到图形的运用内存占用都会大很多。看似只是 Hello World 没有提示有各种渲染的对象。Android 机制是会分配一个内存空间给你,默认最大是 128M ,不超过就使劲用。 另外,不太清除是不是一些共享内存都计算在内。
    zachlhb
        21
    zachlhb  
       165 天前 via iPhone
    用 kotlin 语言开发,Java 相当耗内存
    okakuyang
        22
    okakuyang  
       165 天前
    也不算啥,ios 那边稍微写点代码也占 20 多 M 。
    yinzhili
        23
    yinzhili  
       165 天前
    @lloovve 然后 2g 内存的手机价格反而更高,消费者觉得自己赚了,厂商也赚了,双赢
    dddddd
        24
    dddddd  
       165 天前
    大部分是共享的内存,去了解一下 zygote 启动过程
    hatcloud
        25
    hatcloud  
       165 天前
    @zachlhb ???
    Kotlin 和 Java 写的,最后编译完后不都是一样的字节码吗?会有什么区别?
    zachlhb
        26
    zachlhb  
       165 天前 via iPhone
    @hatcloud 不一样,我用 flutter 试过,分别用 Java 和 kotlin 创建默认 demo 项目,打包后测试,kotlin 就是比 Java 的占有资源少很多
    4kingRAS
        27
    4kingRAS  
       165 天前
    安卓上的 java 程序每个进程都是一个 zygote 生的虚拟机,每个虚拟机会均摊所有应用可能用到的共享内存。这是内存紧张的设备上非常好的策略,对于单个 App ,哪怕没做什么内存也很大。但是对于整个系统,内存是不变的。

    我这几天正在做安卓内存优化,20M 优化到 13M ,安卓上哪怕一个空壳进程都要占用 8 ,9M 左右。如果想再精简,那就只能写 native 程序。
    hatcloud
        28
    hatcloud  
       163 天前
    @zachlhb 我觉得可能是两者的优化上做的不太一样。毕竟 Google 可能对 Java 语言都不太上心了。
    john6lq
        29
    john6lq  
       157 天前
    @zachlhb 我怎么没看懂呢,Flutter 试过 Java 和 Kotlin 创建项目? Flutter 在这是起什么作用?混合开发?
    zachlhb
        30
    zachlhb  
       157 天前 via iPhone
    flutter 是开发框架,主要语言是 dart ,可以直接开发 app ,web ,桌面应用,对于 app ,你可以使用 flutter 的组件来开发跨平台的功能,也可以使用某个平台的语言直接开发,对于安卓你可以选择使用 java 还是 kotlin 作为安卓的语言
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2151 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:21 · PVG 00:21 · LAX 09:21 · JFK 12:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.