deep89381
0D
V2EX  ›  Android

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

  •  4
     
  •   deep89381 · Nov 23, 2018 · 37501 views
    This topic created in 2901 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Nov 23, 2018

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

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

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

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

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

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


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

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

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

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

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

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

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


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