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

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

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

    小米和华为手机底层差距咋这么多。 我的一个 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?
    zhuifeng1017
        11
    zhuifeng1017  
    OP
       2018-11-23 14:37:13 +08:00
    花半小时写个 dome 自己测试下就明白了。其实我觉得华为这样设计是对的,没毛病!
    afc
        12
    afc  
       2018-11-23 14:40:02 +08:00   ❤️ 3
    能拍夜景就完事了。
    Yoefs
        13
    Yoefs  
       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 你开那么多线程干嘛![狗头保命]
    zhuifeng1017
        17
    zhuifeng1017  
    OP
       2018-11-23 14:54:01 +08:00
    @iccfish @est 我自己做个端口扫描工具玩玩,^.^
    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
    警告!
    zhuifeng1017
        25
    zhuifeng1017  
    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
    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
    zhuifeng1017
        60
    zhuifeng1017  
    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,在你没有使用的时候,是虚拟内存,并不占用实际内存。
    mumujun
        72
    mumujun  
       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 公里,这个值得怀疑啊
    zhuifeng1017
        78
    zhuifeng1017  
    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 系统会报这个
    0312birdzhang
        82
    0312birdzhang  
       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 使用,一个线程就能完成你的需求
    zhuifeng1017
        84
    zhuifeng1017  
    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 点名批评过,现在好的多了
    huiyifyj
        96
    huiyifyj  
       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   ·   实用小工具   ·   2086 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:26 · PVG 08:26 · LAX 16:26 · JFK 19:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.