activity线程运行大约10分钟后,报错:pthread_create failed: clone failed: Out of memory

dh天蓝蓝天 2016-07-29 05:23:59
activity中的线程运行大约10分钟后,程序崩溃。下面的线程问题出在哪儿???
有两个报错:
libc
pthread_create failed: clone failed: Out of memory
art
Throwing OutOfMemoryError "pthread_create (1040KB stack) failed: Out of memory"




protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);

startReconnect();//调用线程

}

private void startReconnect() {

scheduler = Executors.newSingleThreadScheduledExecutor();

scheduler.scheduleAtFixedRate(new Runnable() {

@Override
public void run() {
//do somethings
connect();//调用
}
}, 0 * 1000, 1 * 1000, TimeUnit.MILLISECONDS);

}

private void connect() {
new Thread(new Runnable() {
@Override
public void run() {
while(true){

String topic = subscriber.recvStr();

String data = subscriber.recvStr();

System.out.println("客户端="+data);
;
}
}
}).start();
}
...全文
1447 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dereck1314 2016-07-30
  • 打赏
  • 举报
回复
不停的new Thread to start 不行吧
3秒关机 2016-07-30
  • 打赏
  • 举报
回复
线程池有水吗?可以游泳不?泳裤可以不穿吗?有人在里面撒尿吗?
Aln_ 2016-07-30
  • 打赏
  • 举报
回复
楼上正解 ,,当需要new 很多线程时 ,就应该用线程池 处理
lwlizhe 2016-07-30
  • 打赏
  • 举报
回复
引用 2 楼 yds2277 的回复:
每次在在哪儿关闭(停止、注销)线程?
嗯,用线程池是最好最方便的解决方案,不过加入你非要不用线程池的话,可以调用isAlive方法检测这个线程是否活动,如果是的话,将他=null;然后新建同一个线程。理论上我是这么想的,实际操作没试过。 最后再加一句: 大力推荐使用线程池,毕竟官方提供了线程池策略就是解决你这种多个线程操作运行的问题的。
qianshengta 2016-07-29
  • 打赏
  • 举报
回复
吧线程加到线程池里进行关系吧,
qianshengta 2016-07-29
  • 打赏
  • 举报
回复
引用 1 楼 lwlizhe 的回复:
内存溢出了:Out of Memory…………估计是connect方法,你不断的new Thread,而不终止不用的线程,因此,消耗的内存渐渐增多,最终溢出
真理
dh天蓝蓝天 2016-07-29
  • 打赏
  • 举报
回复
每次在在哪儿关闭(停止、注销)线程?
lwlizhe 2016-07-29
  • 打赏
  • 举报
回复
内存溢出了:Out of Memory…………估计是connect方法,你不断的new Thread,而不终止不用的线程,因此,消耗的内存渐渐增多,最终溢出

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧