C#中线程占用内存过大解决方法
来源:互联网 发布:金棕榈 软件 编辑:程序博客网 时间:2024/05/22 05:09
C#中线程占用内存过大解决方法
项目中用到了多线程,而且是1000线程并发运行,发现内存占用过高,于是对项目里用到的对象逐个测试,发现是线程对象占用内存
Thread[] threads = new Thread[1000]; for(int i = 0; i<threads.Length; i++) { (threads[i] = new Thread(new ThreadStart(delegate() { Thread.Sleep(100000); })) { IsBackground = true }).Start(); };
运行以上测试代码,内存使用量瞬间增加1G, 如果数量写到2000+, 直接抛出System.OutOfMemoryException的异常.
---------------------
经查出thread构造函数里有一个 int maxStackSize, //设置线程最大栈空间
再次测试在构造函数中把 maxStackSize设置为1024, 分配5000线程并发运行, 这次只占用了1.3G左右内存
Thread thread1 = new Thread(new ThreadStart(test),1024);
(事实设置1024实际栈空间并非1024,而是线程自动设置为最小栈空间(测试在200K至400K之间),具体没查这个最小栈空间是多大)
在一般文章中很少见有这个参数被提起.
阅读全文
0 0
- C#中线程占用内存过大解决方法
- C#中线程占用内存过大解决方法
- C#中线程占用内存过大解决方法
- wamp中mysqld占用内存过大的解决方法
- [ZT]MSSQL占用内存过大的解决方法
- MSSQL占用内存过大的解决方法
- PHPExcel占用内存过大
- 关于fielddata数据占用内存过大的解决方法
- CentOS linux 中mysql5.6 占用内存过大处理
- php-fpm 内存占用过大
- win7--svchost占用内存过大
- linux 内存占用过大分析
- 【Unity3D】中如何分配内存占用(解决内存占用过大问题)
- Android中图片过大造成内存溢出常用解决方法
- centos mysql占用磁盘空间过大解决方法
- 移花接木解决.net程序内存占用过大
- hiveserver 占用内存过大的问题
- SVN CPU内存占用过大问题
- Python 中空字符串用于条件表达式的方法
- 虚拟币开发专题(大家经常说的山寨币钱包到底是什么)
- c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现
- 事件和事件处理
- tensorflow安装正确, import tf, the problem is "Couldn't find field google.protob.ExtensionRange.options"
- C#中线程占用内存过大解决方法
- python反转字符串的几种方式
- C# 线程手册 第六章 线程调试与跟踪
- OI数学Note(基础篇)
- 【Linux】--系统vsftpd服务器安装配置(整理一)
- 8.16 恶魔城 1128
- 使用微信公众号链接进入discuz试提示"您访问的页面无手机页面" 二
- 那些复杂的列表总要弄个清楚——(三)激动人心的BaseAdapter之一
- zz-index属性