小米和华为手机底层差距咋这么多。 我的一个 Android APP,在华为上跑 300 个线程就 OOM 了,而相同配置的小米机器上跑 2000 个线程也不会 OOM ?
哈哈,这么多人问我有木有程序员认证, 我只是想抛个问题而已。
假设有个需求:1 秒发送 500 个 http get 或 post 请求,每个请求的 ip 和端口都不一样。数据响应只需得到 http 状态码,不需要解析具体的 response 内容。
记住: 每秒 500 个请求,而且不能闪退!
1
hauk0101 2018-11-23 14:09:44 +08:00 via Android 1
华为软件层做的也不咋样,尤其是浏览器。。。
|
2
gabri 2018-11-23 14:11:35 +08:00 via Android 6
麒麟警告
|
3
XinLake 2018-11-23 14:12:41 +08:00 via Android
图呢
|
4
qwertty01 2018-11-23 14:29:26 +08:00 2
华为水军还有 30 秒钟到达战场
|
5
BOYPT 2018-11-23 14:30:07 +08:00
华为水军还有 5 秒钟到达战场
|
6
jason94 2018-11-23 14:31:39 +08:00 5
全军出击~
|
7
lengyihan 2018-11-23 14:34:51 +08:00 via Android 1
victory !!!
|
8
102400 2018-11-23 14:35:18 +08:00
开发时同样的 APP 确实华为问题会多点,不知道是不是底层动得太多了
|
9
helionzzz 2018-11-23 14:36:02 +08:00
理智一下,来爆个型号。。避雷
|
10
JiafuYuan 2018-11-23 14:36:49 +08:00 9
这算辱 hua?
|
11
zhuifeng1017 OP 花半小时写个 dome 自己测试下就明白了。其实我觉得华为这样设计是对的,没毛病!
|
12
afc 2018-11-23 14:40:02 +08:00 3
能拍夜景就完事了。
|
13
Yoefs 2018-11-23 14:41:16 +08:00
华为自己的工程师不也说自己的家的 EMUI 不咋地么,太冗余了
|
14
zclHIT 2018-11-23 14:44:15 +08:00
爆一下型号,避免触雷。。
|
15
est 2018-11-23 14:44:36 +08:00 11
|
16
iccfish 2018-11-23 14:50:34 +08:00 1
对啊,LZ 你开那么多线程干嘛![狗头保命]
|
17
zhuifeng1017 OP |
18
donyee 2018-11-23 14:55:23 +08:00 22
你为啥测试这么多线程?你有程序员证吗?
|
19
shyrock 2018-11-23 14:58:30 +08:00 4
照片门、闪存门、疏油层门、绿屏门都没有打倒华为,lz 你这是想搞个大新闻?
|
20
hahasong 2018-11-23 15:02:14 +08:00
小米啥型 号,想买一个
|
21
graysheeep 2018-11-23 15:05:12 +08:00
麒麟警告
|
22
JamesSi 2018-11-23 15:06:09 +08:00 via Android 1
看到现在一个海军也没有…
|
24
shanlan 2018-11-23 15:08:11 +08:00
警告!
|
25
zhuifeng1017 OP @hahasong ,就是个 Redmi5 Plus 4G
|
26
jitongxi 2018-11-23 15:09:41 +08:00
华为=智商检测机
|
27
volks 2018-11-23 15:09:58 +08:00 via Android 1
当蓝是为用户设想,防止软件滥用资源啊
|
28
kernel 2018-11-23 15:12:51 +08:00 via Android
说明小米的系统不行。 跑两千个线程这种垃圾消耗资源应用都干不掉。
|
29
di1012 2018-11-23 15:13:28 +08:00 20
突然想起来一个笑话,两个人是邻居,关系很好,但他们各自养的狗一见面就掐架。。。。
|
30
66beta 2018-11-23 15:17:21 +08:00 via Android
华为海军 2 个航母打击大队马上到位
|
32
WuwuGin 2018-11-23 15:22:48 +08:00
省电精灵⚠️。
|
33
diggerdu 2018-11-23 15:33:54 +08:00 via iPhone
这不是 bug 这是 feature !!!
|
34
also24 2018-11-23 15:34:44 +08:00 via Android
33 楼了,居然还没有人问 机型 /系统版本 /运行内存 ……
|
35
also24 2018-11-23 15:35:48 +08:00 via Android
啊,仔细看了一下,漏掉了 9/14/20/25 楼
|
36
skyadmin 2018-11-23 15:49:43 +08:00
红米这个价钱上,华为一个能打的都没有。
|
37
alex321 2018-11-23 15:55:00 +08:00 1
我依稀记得当年华为被爆 lpddr3/4 和 emmc5.1/5.0 甚至 4.5 在自家旗舰机型上混用的时候,官方说过对比同代别家的 lpddr4 + ufs2.1 旗舰组合,华为在优化上使其达到了同样的体验。
|
41
blackhacker 2018-11-23 17:05:12 +08:00
@di1012 本来不想回这帖子的,真被这哥们儿逗笑了!
|
42
000wangxinyu000 2018-11-23 17:10:43 +08:00
@est 对啊,LZ 你开那么多线程干嘛!
|
43
vokins 2018-11-23 17:10:54 +08:00 via iPhone
半年以前狠狠心买了 p20pro,电池 4000 还没有别家 3000 的耐用。夜景挺好的。买完几天内就陆续看到 p20pro 吊打索尼 a7 和尼康 d850 的通稿。滑动卡顿,打电话给客服说一周内会推送新版解决。电信信号比高通处理器的信号好,联通信号很差。我等不了,也不相信煲机续航有提升。三天内就以七天无理由退货了。
|
44
season4675 2018-11-23 17:15:23 +08:00
首先……如果你那 1G 的华为和 6G 的小米比,那就……
|
45
nzd 2018-11-23 17:16:30 +08:00
水军+黑 PR,无限负分。。。。
|
46
vanxy 2018-11-23 17:18:31 +08:00 5
写了个 Demo 验证了一下:启动线程 Sleep 30s, 批量开始增加,一直到崩溃闪退:
诺基亚 x7 (高通):7000 个线程时闪退 魅族 pro6s (联发科):11000 个线程时闪退 华为 Mate 8 (麒麟):500 个线程时闪退 华为荣耀 9Lite (麒麟):500 个线程时闪退 果然联发科比较牛 |
48
xiaozhuyaoye010 2018-11-23 17:35:40 +08:00
记得我在 tb 上收到一个缺陷,是只有荣耀和华为的机型才会出现的问题。
我不是做安卓的,公司的 APP 是内嵌的我们的网页,接到这个 bug 的时候我一脸黑线。。。。。。。 |
49
Jessepinkman 2018-11-23 17:42:52 +08:00
华为用户,但再也不打算买华为了。
|
50
zt1991616 2018-11-23 17:44:12 +08:00
我们 HTTP header 对时间敏感,后台有很多报错的 log,HW 在某些情况下真正请求的时间是我发起 HTTP 的几个小时甚至十几个小时后
PS:怀疑是锁屏后 APP 锁屏后被暂停了 |
51
zt1991616 2018-11-23 17:45:57 +08:00
PPS:对于超多线程的情况 可以试试 https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md
|
52
XinLake 2018-11-23 17:48:21 +08:00 via Android
老夫弱弱的问下,上次华为 P10 内存事件好几十个用户状告华为,那事情咋样了,有人知道不,求科普
|
53
yakun4566 2018-11-23 17:56:55 +08:00
pro6 这么厉害么,我的送妹妹了。。。
|
54
acidsweet 2018-11-23 17:59:20 +08:00
来当个海军好了。这 tm 是手机不是服务器啊,那么多线程干什么?
华为手机照片门、闪存门、疏油层门、绿屏门都是确凿的丑事,但是多线程这事不是啊,一个嵌入式设备支持那么高并发干蛋? 池化、协程才是你代码应该考虑的,切换线程不要代价的啊 |
57
zhiqiang21 2018-11-23 18:09:51 +08:00
请问下你是程序员有认证嘛。。。。逃。。。。。
|
58
EXE 2018-11-23 18:18:49 +08:00
楼主这是要搞个“线程门”?
|
59
nicevar 2018-11-23 18:28:45 +08:00
你们都错了,楼主要么无知,要么就是故意钓鱼的,其实就是一个 heapsize 的问题,华为有些高端机器也限制在 256m,而小米是 512m
|
60
zhuifeng1017 OP 哈哈,这么多人问我有木有程序员认证, 我只是想抛个问题而已。
假设有个需求:1 秒发送 500 个 http get 或 post 请求,每个请求的 ip 和端口都不一样。数据响应只需得到 http 状态码,不需要解析具体的 response 内容。 记住: 每秒 500 个请求,而且不能闪退! |
63
nicevar 2018-11-23 18:45:18 +08:00
@est 肯定不包括低端机,低端机大多数限制 256m,我都怀疑楼主是华为的人故意来消遣 v 站的华为黑,其实就是每个进程的最大内存限制不同而已,与硬件配置没啥关系,build rom 的时候限制了,用 getprops 看一下两台设备的 heapsize 就清楚了,华为很多高端设备也是限制 256m,这个做法也没啥
|
64
XinLake 2018-11-23 18:54:10 +08:00 via Android
heapsize 限制不一样也不会这么大差别吧,难道芯片缺陷?
|
66
ChrisTsai 2018-11-23 18:58:49 +08:00
@zhuifeng1017 #60 没什么意义,谁说的 500 个请求必须得开 500 条线程?开 50 条线程每条线程并发 10 条请求不可以?我猜只是华为人为限制一个 APP 不允许有这么多线程罢了,和底层性能无关。
|
67
23f0baf3 2018-11-23 19:00:30 +08:00 via Android
怕是乱改了系统主动限制线程吧,尽管我觉得限制挺合理的。正常程序不需要开 500 个。。。华为总是喜欢乱魔改,内核还禁用了 ptrace,导致很多修改器之类的不能用。。。
关于扫描器,当然是用 raw socket,发完包直接停止,握手都不要完成最快了,当然可能要 root,建议参观成熟的扫描器实现 nmap,zmap。需求简单的话 termux 直接装个 nmap 也很方便。 |
68
bkmi 2018-11-23 19:01:15 +08:00 via Android
|
69
pwrliang 2018-11-23 19:01:34 +08:00 via Android
每个线程都有独立的 Stack,难道不是 Stack size 的问题?
|
70
niketwo 2018-11-23 19:02:35 +08:00 via Android
我华为手机有问题我还不能说啊!“敢说华为有问题,是不是要叛国啊!(一脚踢飞)”
|
72
mumujun 2018-11-23 19:06:07 +08:00 via Android 1
亏这是 v2ex,要是别的网站你早就水军缠身了
|
73
XinLake 2018-11-23 19:06:39 +08:00 via Android
抛开 JVM 不说。要是底层 c 代码线程数差别这么大,这芯片就有特点了。
可惜我没机器式不了 |
74
zhangdawei 2018-11-23 19:09:48 +08:00
@di1012 哈哈哈哈哈哈哈哈
|
75
longbye0 2018-11-23 19:09:53 +08:00 via Android
这个标题有主语不清的问题
|
76
FenGuWu 2018-11-23 19:13:39 +08:00 via iPhone
钓鱼贴无疑。题主的信息太少了。好比:博尔特跑的比乔丹快。所以博尔特是运动能力更强的那个。显然比较不能这么比。
|
77
XinLake 2018-11-23 19:16:50 +08:00 via Android
轿车都能跑到 200 公里,有的还能跑更多,华为产的只能跑 30 公里,这个值得怀疑啊
|
78
zhuifeng1017 OP @FenGuWu , 哈哈,你是不是看到小米和华为放一起就要干架的感觉。你知道啥是 OOM 么?👎
|
79
feverzsj 2018-11-23 19:18:04 +08:00
因为华为就是烂呀,这么简单的道理都不懂?
|
81
nicevar 2018-11-23 19:23:38 +08:00
@apeshit 没什么关系,楼主说的是 OOM,超过 heapsize 被系统强行干掉了然后 android 系统会报这个
|
82
0312birdzhang 2018-11-23 19:34:55 +08:00 via iPhone
|
83
wwqgtxx 2018-11-23 19:36:45 +08:00
@zhuifeng1017 你难道不知道有一种机制叫做非阻塞式 socket 么,配合 epoll 使用,一个线程就能完成你的需求
|
84
zhuifeng1017 OP @wwqgtxx , 当然知道,用 c++我可以写,用 epoll 或 select 都可以。java 我想用 okhttp 来写,但是 okhttp 是用线程池来搞的,一个连接一个线程 (ps:相同的 host+port 才复用线程)
|
85
treo 2018-11-23 21:08:34 +08:00 2
小米有很多外资股东
ov 的后台老板段永平,早就移民美国了 只有华为是纯内资的,真正的中国人自己的手机 华为再难用,emui 再丑,bug 再多,屏幕再绿,照片再怎么丢,不买华为也对不起自己的良心 |
86
zzlhr 2018-11-23 21:12:15 +08:00
华为人估计在加班,还没出来~~~逃
|
87
jiangnanyanyu 2018-11-23 21:38:02 +08:00 via Android
你这是乳.hua(doge)
|
88
n37r06u3 2018-11-23 21:43:50 +08:00
华为吧 不仅硬件垃圾 ,系统更垃圾。小米系统还是不错的,虽然广告多。
|
89
wobushizhangsan 2018-11-23 21:44:14 +08:00 via Android
小米连这种流氓应用都检测不出来,技术不行啊😏
|
91
heiher 2018-11-23 21:50:25 +08:00 via Android
哈哈,协程了解一下。
|
92
xyjincan 2018-11-23 22:25:23 +08:00 via Android
发 HTTP 请求也不一定开一堆线程吧
|
93
XinLake 2018-11-23 22:32:55 +08:00 via Android
有的网络应用很多线程的,UPnP 协议栈动不动上百个线程
|
95
flynaj 2018-11-23 22:34:55 +08:00 via Android
国内手机都喜欢修改系统,小米是以前被 Google 点名批评过,现在好的多了
|
96
huiyifyj 2018-11-23 23:05:30 +08:00
以前我一直吐槽,开头一张图,内容全靠扯。
现在...emm ,图呢? 楼上真的好多无脑黑。 |
97
FenGuWu 2018-11-23 23:16:10 +08:00 via iPhone
@zhuifeng1017 如果不给我 OOM 的原因怎么讨论呢? OOM 可能是栈的原因(线程太多栈空间不足)华为限制了栈大小么?还是堆空间不足,有无法回收的对象导致的?啥都没有你说怎么比较?万一你强行 string.intern 呢?这可能导致持久代 OOM 啊。
|
98
metrxqin 2018-11-23 23:29:48 +08:00
这是在写 APP 还是服务端?
|
99
t6attack 2018-11-23 23:35:40 +08:00
这就是为什么厂商都争取 APP 化,有了完整的客户端权限,可以自由下发脚本代码,拿用户手机做任何事。
每个用户的手机都是一台肉鸡、一个全功能的代理 IP 资源。 |