首页 > 代码库 > 多线程引发OutOfMemoryException
多线程引发OutOfMemoryException
现象:
内存是绝对没有问题的,3g内存,发生异常时,任务管理器里显示,可用内存还有1G多!不知道什么原因!
int i=0;while ((i++) < 2000) { try { Thread t = new Thread(Test); t.IsBackground = true; t.Start(); } catch (Exception ex) { MessageBox.Show("current loop: " + i.ToString() + "\r\n" + ex.ToString()); break; } }void Test() { Thread.Sleep(120 * 1000); }
当线程加到1305时就会报OutOfMemoryException异常。
解决:
.net默认为每个线程分配的椎大小是1m,当启动1305个线程时,光是启动线程就占用1305*1m的内存
//把椎大小由1m改为512KThread t = new Thread(Test, 1024 * 512); t.IsBackground = true; t.Start();
经过上面改动后,可以启动2602个线程.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。