小米和华为手机底层差距咋这么多? 跑 300 个线程就 OOM? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
deep89381
0D
V2EX    Android

小米和华为手机底层差距咋这么多? 跑 300 个线程就 OOM?

  •  4
     
  •   deep89381 2018-11-23 14:04:14 +08:00 34564 次点击
    这是一个创建于 2582 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小米和华为手机底层差距咋这么多。 我的一个 Android APP,在华为上跑 300 个线程就 OOM 了,而相同配置的小米机器上跑 2000 个线程也不会 OOM ?

    第 1 条附言    2018-11-23 18:37:50 +08:00

    哈哈,这么多人问我有木有程序员认证, 我只是想抛个问题而已。

    假设有个需求:1 秒发送 500 个 http get 或 post 请求,每个请求的 ip 和端口都不一样。数据响应只需得到 http 状态码,不需要解析具体的 response 内容。

    记住: 每秒 500 个请求,而且不能闪退!

    158 条回复    2018-11-26 10:22:36 +08:00
    1  2  
    hauk0101
        1
    hauk0101  
       2018-11-23 14:09:44 +08:00 via Android   1
    华为软件层做的也不咋样,尤其是浏览器。。。
    gabri
        2
    gabri  
       2018-11-23 14:11:35 +08:00 via Android   6
    麒麟警告
    XinLake
        3
    XinLake  
       2018-11-23 14:12:41 +08:00 via Android
    图呢
    qwertty01
        4
    qwertty01  
       2018-11-23 14:29:26 +08:00   2
    华为水军还有 30 秒钟到达战场
    BOYPT
        5
    BOYPT  
       2018-11-23 14:30:07 +08:00
    华为水军还有 5 秒钟到达战场
    jason94
        6
    jason94  
       2018-11-23 14:31:39 +08:00   5
    全军出击~
    lengyihan
        7
    lengyihan  
       2018-11-23 14:34:51 +08:00 via Android   1
    victory !!!
    102400
        8
    102400  
       2018-11-23 14:35:18 +08:00
    开发时同样的 APP 确实华为问题会多点,不知道是不是底层动得太多了
    helionzzz
        9
    helionzzz  
       2018-11-23 14:36:02 +08:00
    理智一下,来爆个型号。。避雷
    JiafuYuan
        10
    JiafuYuan  
       2018-11-23 14:36:49 +08:00   9
    这算辱 hua?
    deep89381
        11
    deep89381  
    OP
       2018-11-23 14:37:13 +08:00
    花半小时写个 dome 自己测试下就明白了。其实我觉得华为这样设计是对的,没毛病!
    afc
        12
    afc  
       2018-11-23 14:40:02 +08:00   3
    能拍夜景就完事了。
    ech2o
        13
    ech2o  
       2018-11-23 14:41:16 +08:00
    华为自己的工程师不也说自己的家的 EMUI 不咋地么,太冗余了
    zclHIT
        14
    zclHIT  
       2018-11-23 14:44:15 +08:00
    爆一下型号,避免触雷。。
    est
        15
    est  
       2018-11-23 14:44:36 +08:00   11
    @zhuifeng1017 巧了我在 zhihu 上喷华为 ROM 杀进程影响开发。

    一堆人喷「你们这种流氓 app 就活该被杀」

    我感觉海军来这贴,也会用一样的说辞。LZ 你开那么多线程干嘛!
    iccfish
        16
    iccfish  
       2018-11-23 14:50:34 +08:00   1
    对啊,LZ 你开那么多线程干嘛![狗头保命]
    deep89381
        17
    deep89381  
    OP
       2018-11-23 14:54:01 +08:00
    donyee
        18
    donyee  
       2018-11-23 14:55:23 +08:00   22
    你为啥测试这么多线程?你有程序员证吗?
    shyrock
        19
    shyrock  
       2018-11-23 14:58:30 +08:00   4
    照片门、闪存门、疏油层门、绿屏门都没有打倒华为,lz 你这是想搞个大新闻?
    hahasong
        20
    hahasong  
       2018-11-23 15:02:14 +08:00
    小米啥型 号,想买一个
    graysheeep
        21
    graysheeep  
       2018-11-23 15:05:12 +08:00
    麒麟警告
    JamesSi
        22
    JamesSi  
       2018-11-23 15:06:09 +08:00 via Android   1
    看到现在一个海军也没有…
    labnotok
        23
    labnotok  
       2018-11-23 15:07:42 +08:00 via Android
    @JamesSi v2 这种小站是不会有正规水军的
    shanlan
        24
    shanlan  
       2018-11-23 15:08:11 +08:00
    警告!
    deep89381
        25
    deep89381  
    OP
       2018-11-23 15:09:04 +08:00
    @hahasong ,就是个 Redmi5 Plus 4G
    jitongxi
        26
    jitongxi  
       2018-11-23 15:09:41 +08:00
    华为=智商检测机
    volks
        27
    volks  
       2018-11-23 15:09:58 +08:00 via Android   1
    当蓝是为用户设想,防止软件滥用资源啊
    kernel
        28
    kernel  
       2018-11-23 15:12:51 +08:00 via Android
    说明小米的系统不行。 跑两千个线程这种垃圾消耗资源应用都干不掉。
    di1012
        29
    di1012  
       2018-11-23 15:13:28 +08:00   20
    突然想起来一个笑话,两个人是邻居,关系很好,但他们各自养的狗一见面就掐架。。。。
    66beta
        30
    66beta  
       2018-11-23 15:17:21 +08:00 via Android
    华为海军 2 个航母打击大队马上到位
    youngpier
        31
    youngpier  
       2018-11-23 15:20:57 +08:00
    @di1012 哈哈哈,有种在座的都是辣鸡的既视感。
    WuwuGin
        32
    WuwuGin  
       2018-11-23 15:22:48 +08:00
    省电精灵。
    diggerdu
        33
    diggerdu  
       2018-11-23 15:33:54 +08:00 via iPhone
    这不是 bug 这是 feature !!!
    also24
        34
    also24  
       2018-11-23 15:34:44 +08:00 via Android
    33 楼了,居然还没有人问 机型 /系统版本 /运行内存 ……
    also24
        35
    also24  
       2018-11-23 15:35:48 +08:00 via Android
    啊,仔细看了一下,漏掉了 9/14/20/25 楼
    skyadmin
        36
    skyadmin  
       2018-11-23 15:49:43 +08:00
    红米这个价钱上,华为一个能打的都没有。
    alex321
        37
    alex321  
       2018-11-23 15:55:00 +08:00   1
    我依稀记得当年华为被爆 lpddr3/4 和 emmc5.1/5.0 甚至 4.5 在自家旗舰机型上混用的时候,官方说过对比同代别家的 lpddr4 + ufs2.1 旗舰组合,华为在优化上使其达到了同样的体验。
    ermao
        38
    ermao  
       2018-11-23 15:55:56 +08:00
    @also24 #35 哈哈哈哈你这漏掉的也太多了
    also24
        39
    also24  
       2018-11-23 16:16:08 +08:00
    @ermao #38
    其实也不算漏掉,我本来就是想吐槽,大家似乎没有把这件事儿当作一个技术问题来看待。
    Kolin
        40
    a href="/member/Kolin" class="dark">Kolin  
       2018-11-23 17:02:56 +08:00
    @also24 你怎么可以这么可爱。。
    blackhacker
        41
    blackhacker  
       2018-11-23 17:05:12 +08:00
    @di1012 本来不想回这帖子的,真被这哥们儿逗笑了!
    000wangxinyu000
        42
    000wangxinyu000  
       2018-11-23 17:10:43 +08:00
    @est 对啊,LZ 你开那么多线程干嘛!
    vokins
        43
    vokins  
       2018-11-23 17:10:54 +08:00 via iPhone
    半年以前狠狠心买了 p20pro,电池 4000 还没有别家 3000 的耐用。夜景挺好的。买完几天内就陆续看到 p20pro 吊打索尼 a7 和尼康 d850 的通稿。滑动卡顿,打电话给客服说一周内会推送新版解决。电信信号比高通处理器的信号好,联通信号很差。我等不了,也不相信煲机续航有提升。三天内就以七天无理由退货了。
    season4675
        44
    season4675  
       2018-11-23 17:15:23 +08:00
    首先……如果你那 1G 的华为和 6G 的小米比,那就……
    nzd
        45
    nzd  
       2018-11-23 17:16:30 +08:00
    水军+黑 PR,无限负分。。。。
    vanxy
        46
    vanxy  
       2018-11-23 17:18:31 +08:00   5
    写了个 Demo 验证了一下:启动线程 Sleep 30s, 批量开始增加,一直到崩溃闪退:


    诺基亚 x7 (高通):7000 个线程时闪退

    魅族 pro6s (联发科):11000 个线程时闪退

    华为 Mate 8 (麒麟):500 个线程时闪退

    华为荣耀 9Lite (麒麟):500 个线程时闪退

    果然联发科比较牛
    vx2018
        47
    vx2018  
       2018-11-23 17:27:17 +08:00
    @shyrock 闪存门、疏油层门 我的 P10(艹皿艹 )
    xiaozhuyaoye010
        48
    xiaozhuyaoye010  
       2018-11-23 17:35:40 +08:00
    记得我在 tb 上收到一个缺陷,是只有荣耀和华为的机型才会出现的问题。
    我不是做安卓的,公司的 APP 是内嵌的我们的网页,接到这个 bug 的时候我一脸黑线。。。。。。。
    Jessepinkman
        49
    Jessepinkman  
       2018-11-23 17:42:52 +08:00
    华为用户,但再也不打算买华为了。
    zt1991616
        50
    zt1991616  
       2018-11-23 17:44:12 +08:00
    我们 HTTP header 对时间敏感,后台有很多报错的 log,HW 在某些情况下真正请求的时间是我发起 HTTP 的几个小时甚至十几个小时后
    PS:怀疑是锁屏后 APP 锁屏后被暂停了
    zt1991616
        51
    zt1991616  
       2018-11-23 17:45:57 +08:00
    XinLake
        52
    XinLake  
       2018-11-23 17:48:21 +08:00 via Android
    老夫弱弱的问下,上次华为 P10 内存事件好几十个用户状告华为,那事情咋样了,有人知道不,求科普
    yakun4566
        53
    yakun4566  
       2018-11-23 17:56:55 +08:00
    pro6 这么厉害么,我的送妹妹了。。。
    acidsweet
        54
    acidsweet  
       2018-11-23 17:59:20 +08:00
    来当个海军好了。这 tm 是手机不是服务器啊,那么多线程干什么?
    华为手机照片门、闪存门、疏油层门、绿屏门都是确凿的丑事,但是多线程这事不是啊,一个嵌入式设备支持那么高并发干蛋?
    池化、协程才是你代码应该考虑的,切换线程不要代价的啊
    yukiww233
        55
    yukiww233  
       2018-11-23 17:59:38 +08:00   2
    @XinLake #52
    一审驳回了,原告负担受理费用
    XinLake
        56
    XinLake  
       2018-11-23 18:05:28 +08:00 via Android
    @yukiww233 那人家买到 emmc 的差别太大了吧,说虚假宣传不过分了。那种怎么判的?
    zhiqiang21
        57
    zhiqiang21  
       2018-11-23 18:09:51 +08:00
    请问下你是程序员有认证嘛。。。。逃。。。。。
    EXE
        58
    EXE  
       2018-11-23 18:18:49 +08:00
    楼主这是要搞个“线程门”?
    nicevar
        59
    nicevar  
       2018-11-23 18:28:45 +08:00
    你们都错了,楼主要么无知,要么就是故意钓鱼的,其实就是一个 heapsize 的问题,华为有些高端机器也限制在 256m,而小米是 512m
    deep89381
        60
    deep89381  
    OP
       2018-11-23 18:36:34 +08:00
    哈哈,这么多人问我有木有程序员认证, 我只是想抛个问题而已。

    假设有个需求:1 秒发送 500 个 http get 或 post 请求,每个请求的 ip 和端口都不一样。数据响应只需得到 http 状态码,不需要解析具体的 response 内容。 记住: 每秒 500 个请求,而且不能闪退!
    est
        61
    est  
       2018-11-23 18:40:12 +08:00
    @yukiww233 唉。水厂太不要脸了。
    est
        62
    est  
       2018-11-23 18:40:46 +08:00
    @nicevar 小米 512m 包括低端机不
    nicevar
        63
    nicevar  
       2018-11-23 18:45:18 +08:00
    @est 肯定不包括低端机,低端机大多数限制 256m,我都怀疑楼主是华为的人故意来消遣 v 站的华为黑,其实就是每个进程的最大内存限制不同而已,与硬件配置没啥关系,build rom 的时候限制了,用 getprops 看一下两台设备的 heapsize 就清楚了,华为很多高端设备也是限制 256m,这个做法也没啥
    XinLake
        64
    XinLake  
       2018-11-23 18:54:10 +08:00 via Android
    heapsize 限制不一样也不会这么大差别吧,难道芯片缺陷?
    apeshit
        65
    apeshit  
       2018-11-23 18:55:28 +08:00
    @nicevar 请问 HeapSize 和 线程数的关系?
    ChrisTsai
        66
    ChrisTsai  
       2018-11-23 18:58:49 +08:00
    @zhuifeng1017 #60 没什么意义,谁说的 500 个请求必须得开 500 条线程?开 50 条线程每条线程并发 10 条请求不可以?我猜只是华为人为限制一个 APP 不允许有这么多线程罢了,和底层性能无关。
    23f0baf3
        67
    23f0baf3  
       2018-11-23 19:00:30 +08:00 via Android
    怕是乱改了系统主动限制线程吧,尽管我觉得限制挺合理的。正常程序不需要开 500 个。。。华为总是喜欢乱魔改,内核还禁用了 ptrace,导致很多修改器之类的不能用。。。
    关于扫描器,当然是用 raw socket,发完包直接停止,握手都不要完成最快了,当然可能要 root,建议参观成熟的扫描器实现 nmap,zmap。需求简单的话 termux 直接装个 nmap 也很方便。
    bkmi
        68
    bkmi  
       2018-11-23 19:01:15 +08:00 via Android
    @apeshit 我怀疑 @nicevar 就只知道 heapsize 了,jvm 内除了程序计数器之外,方法区、堆、栈等等都有可能抛出 OOM,每个地方配置不一样都有可能造成差异
    pwrliang
        69
    pwrliang  
       2018-11-23 19:01:34 +08:00 via Android
    每个线程都有独立的 Stack,难道不是 Stack size 的问题?
    niketwo
        70
    niketwo  
       2018-11-23 19:02:35 +08:00 via Android
    我华为手机有问题我还不能说啊!“敢说华为有问题,是不是要叛国啊!(一脚踢飞)”
    ChrisTsai
        71
    ChrisTsai  
       2018-11-23 19:02:36 +08:00
    @pwrliang #69 linux 的 stack,在你没有使用的时候,是虚拟内存,并不占用实际内存。
    tudogplus
        72
    tudogplus  
       2018-11-23 19:06:07 +08:00 via Android   1
    亏这是 v2ex,要是别的网站你早就水军缠身了
    XinLake
        73
    XinLake  
       2018-11-23 19:06:39 +08:00 via Android
    抛开 JVM 不说。要是底层 c 代码线程数差别这么大,这芯片就有特点了。

    可惜我没机器式不了
    zhangdawei
        74
    zhangdawei  
       2018-11-23 19:09:48 +08:00
    @di1012 哈哈哈哈哈哈哈哈
    longbye0
        75
    longbye0  
       2018-11-23 19:09:53 +08:00 via Android
    这个标题有主语不清的问题
    FenGuWu
        76
    FenGuWu  
       2018-11-23 19:13:39 +08:00 via iPhone
    钓鱼贴无疑。题主的信息太少了。好比:博尔特跑的比乔丹快。所以博尔特是运动能力更强的那个。显然比较不能这么比。
    XinLake
        77
    XinLake  
       2018-11-23 19:16:50 +08:00 via Android
    轿车都能跑到 200 公里,有的还能跑更多,华为产的只能跑 30 公里,这个值得怀疑啊
    deep89381
        78
    deep89381  
    OP
       2018-11-23 19:17:34 +08:00
    @FenGuWu , 哈哈,你是不是看到小米和华为放一起就要干架的感觉。你知道啥是 OOM 么?
    feverzsj
        79
    feverzsj  
       2018-11-23 19:18:04 +08:00
    因为华为就是烂呀,这么简单的道理都不懂?
    nicevar
        80
    nicevar  
       2018-11-23 19:22:10 +08:00
    @bkmi 你不用怀疑我了,我倒是觉得你先了解一下 heapsize 限制更好点
    nicevar
        81
    nicevar  
       2018-11-23 19:23:38 +08:00
    @apeshit 没什么关系,楼主说的是 OOM,超过 heapsize 被系统强行干掉了然后 android 系统会报这个
    1daydayde
        82
    1daydayde  
       2018-11-23 19:34:55 +08:00 via iPhone
    @zhuifeng1017 竟然我红米 5p 这么牛逼


    来刷个 sailfishos 玩玩啊(滑稽,强行安利一发
    wwqgtxx
        83
    wwqgtxx  
       2018-11-23 19:36:45 +08:00
    @zhuifeng1017 你难道不知道有一种机制叫做非阻塞式 socket 么,配合 epoll 使用,一个线程就能完成你的需求
    deep89381
        84
    deep89381  
    OP
       2018-11-23 21:00:42 +08:00
    @wwqgtxx , 当然知道,用 c++我可以写,用 epoll 或 select 都可以。java 我想用 okhttp 来写,但是 okhttp 是用线程池来搞的,一个连接一个线程 (ps:相同的 host+port 才复用线程)
    treo
        85
    treo  
       2018-11-23 21:08:34 +08:00   2
    小米有很多外资股东
    ov 的后台老板段永平,早就移民美国了
    只有华为是纯内资的,真正的中国人自己的手机
    华为再难用,emui 再丑,bug 再多,屏幕再绿,照片再怎么丢,不买华为也对不起自己的良心
    zzlhr
        86
    zzlhr  
       2018-11-23 21:12:15 +08:00
    华为人估计在加班,还没出来~~~逃
    jiangnanyanyu
        87
    jiangnanyanyu  
       2018-11-23 21:38:02 +08:00 via Android
    你这是乳.hua(doge)
    n37r06u3
        88
    n37r06u3  
       2018-11-23 21:43:50 +08:00
    华为吧 不仅硬件垃圾 ,系统更垃圾。小米系统还是不错的,虽然广告多。
    wobushizhangsan
        89
    wobushizhangsan  
       2018-11-23 21:44:14 +08:00 via Android
    小米连这种流氓应用都检测不出来,技术不行啊
    felixlong
        90
    felixlong  
       2018-11-23 21:47:42 +08:00
    @yukiww233 这判决太会捣浆糊了吧。里面一个 emmc 都没提到。
    heiher
        91
    heiher  
       2018-11-23 21:50:25 +08:00 via Android
    哈哈,协程了解一下。
    xyjincan
        92
    xyjincan  
       2018-11-23 22:25:23 +08:00 via Android
    发 HTTP 请求也不一定开一堆线程吧
    XinLake
        93
    XinLake  
       2018-11-23 22:32:55 +08:00 via Android
    有的网络应用很多线程的,UPnP 协议栈动不动上百个线程
    feverzsj
        94
    feverzsj  
       2018-11-23 22:34:41 +08:00   1
    @treo 对,不用华为就是汉 奸
    flynaj
        95
    flynaj  
       2018-11-23 22:34:55 +08:00 via Android
    国内手机都喜欢修改系统,小米是以前被 Google 点名批评过,现在好的多了
    fengyj
        96
    fengyj  
       2018-11-23 23:05:30 +08:00
    以前我一直吐槽,开头一张图,内容全靠扯。
    现在...emm ,图呢?
    楼上真的好多无脑黑。
    FenGuWu
        97
    FenGuWu  
       2018-11-23 23:16:10 +08:00 via iPhone
    @zhuifeng1017 如果不给我 OOM 的原因怎么讨论呢? OOM 可能是栈的原因(线程太多栈空间不足)华为限制了栈大小么?还是堆空间不足,有无法回收的对象导致的?啥都没有你说怎么比较?万一你强行 string.intern 呢?这可能导致持久代 OOM 啊。
    metrxqin
        98
    metrxqin  
       2018-11-23 23:29:48 +08:00
    这是在写 APP 还是服务端?
    t6attack
        99
    t6attack  
       2018-11-23 23:35:40 +08:00
    这就是为什么厂商都争取 APP 化,有了完整的客户端权限,可以自由下发脚本代码,拿用户手机做任何事。
    每个用户的手机都是一台肉鸡、一个全功能的代理 IP 资源。
    t6attack
        100
    t6attack  
       2018-11-23 23:42:29 +08:00
    @metrxqin LZ 表达的很明确了,是 APP。
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2919 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 13:40 PVG 21:40 LAX 05:40 JFK 08:40
    Do have faith in what 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