57、Android线程有没有上限

分析:
Android系统会给每个应用分配一个内存空间(不同的系统分配的内存大小不同),这块内存空间大小是有限的。
创建线程需要占用内存空间,
不可能拿有限的内存空间创建无限的线程。

结论:
Android线程是有上限的。如果应用创建线程的数量过多,而没有及时释放会导致OOM

测试代码:

private void createThread() {
        while (true) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        long thread = Thread.currentThread().getId();
                        Log.d("creatthread", "开启线程:" + thread);
                        Thread.sleep(1000 * 1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }

报错日志:

 D/creatthread: 开启线程:11000
 ....
 D/creatthread: 开启线程:18101
 W/libc: pthread_create failed: couldn't mprotect TLS: Out of memory
 W/zygote64: Throwing OutOfMemoryError "pthread_create (1040KB stack) failed: Try again"
 D/AndroidRuntime: Shutting down VM

2019-08-06 11:34:45.133 25384-25384/com.cloud.wd.custom E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.cloud.wd.custom, PID: 25384
    java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
        at java.lang.Thread.nativeCreate(Native Method)
        at java.lang.Thread.start(Thread.java:733)
        at com.cloud.wd.custom.MainActivity.createThread(MainActivity.java:159)
        at com.cloud.wd.custom.MainActivity.access$200(MainActivity.java:29)
        at com.cloud.wd.custom.MainActivity$14.onClick(MainActivity.java:125)
        at android.view.View.performClick(View.java:6311)
        at android.view.View$PerformClick.run(View.java:24833)
        at android.os.Handler.handleCallback(Handler.java:794)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:173)
        at android.app.ActivityThread.main(ActivityThread.java:6653)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:821)

如有错误,请求指正

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值