码迷,mamicode.com
首页 > 编程语言 > 详细

多线程引发OutOfMemoryException

时间:2014-08-04 16:58:57      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:blog   os   io   art   问题   ar   div   管理   

现象:

内存是绝对没有问题的,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改为512K
Thread t = new Thread(Test, 1024 * 512);
                    t.IsBackground = true;
                    t.Start();

  

经过上面改动后,可以启动2602个线程.

 

多线程引发OutOfMemoryException,布布扣,bubuko.com

多线程引发OutOfMemoryException

标签:blog   os   io   art   问题   ar   div   管理   

原文地址:http://www.cnblogs.com/kissfu/p/3890303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!