登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
业界
›
.NET陷阱之五:奇怪的OutOfMemoryException——大对象堆 ...
.NET陷阱之五:奇怪的OutOfMemoryException——大对象堆引起的问题与对策
[ 复制链接 ]
琦谓
2025-5-29 16:35:12
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
我们在开发过程中曾经遇到过一个奇怪的问题:当软件加载了很多比较大规模的数据后,会偶尔出现OutOfMemoryException异常,但通过内存检查工具却发现还有很多可用内存。于是我们怀疑是可用内存总量充足,但却没有足够的连续内存了——也就是说存在很多未分配的内存空隙。但不是说.NET运行时的垃圾收集器会压缩使用中的内存,从而使已经释放的内存空隙连成一片吗?于是我深入研究了一下垃圾回收相关的内容,最终明确的了问题所在——大对象堆(LOH)的使用。如果你也遇到过类似的问题或者对相关的细节有兴趣的话,就继续读读吧。
如果没有特殊说明,后面的叙述都是针对32位系统。
首先我们来探讨另外一个问题:不考虑非托管内存的使用,在最坏情况下,当系统出现OutOfMemoryException异常时,有效的内存(程序中有GC Root的对象所占用的内存)使用量会是多大呢?2G? 1G? 500M? 50M?或者更小(是不是以为我在开玩笑)?来看下面这段代码(参考 https://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/)。
1 public class Program
2 {
3 static void Main(string[] args)
4 {
5 var smallBlockSize = 90000;
6 var largeBlockSize = 1 << 24;
7 var count = 0;
8 var bigBlock = new byte[0];
9 try
10 {
11 var smallBlocks = new List<byte[]>();
12 while (true)
13 {
14 GC.Collect();
15 bigBlock = new byte[largeBlockSize];
16 largeBlockSize++;
17 smallBlocks.Add(new byte[smallBlockSize]);
18 count++;
19 }
20 }
21 catch (OutOfMemoryException)
22 {
23 bigBlock = null;
24 GC.Collect();
25 Console.WriteLine("{0} Mb allocated",
26 (count * smallBlockSize) / (1024 * 1024));
27 }
28
29 Console.ReadLine();
30 }
31 }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
NET
陷阱
之五
怪的
OutOfMemoryException
相关帖子
【译】 再次革新 .NET 的构建和发布方式(二)
.NET 诊断技巧 | 日志框架原理、手写日志框架学习
分享 5 种 .NET 桌面应用程序自动更新解决方案
.NET Framework 中的 DataObject
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
基于.NET的Windows窗体编程之WinForms控件简介
基于.NET的Windows窗体编程之WinForms控件简介
【译】 再次革新 .NET 的构建和发布方式(三)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
【译】 再次革新 .NET 的构建和发布方式(二)
0
189
溜椎干
2026-03-29
业界
.NET 诊断技巧 | 日志框架原理、手写日志框架学习
0
223
咒卖箴
2026-03-30
业界
分享 5 种 .NET 桌面应用程序自动更新解决方案
0
1003
寥唏
2026-03-30
业界
.NET Framework 中的 DataObject
0
392
胰芰
2026-03-30
业界
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
0
100
告陕无
2026-03-30
业界
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
0
505
战匈琼
2026-03-30
业界
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
0
821
里豳朝
2026-03-30
安全
基于.NET的Windows窗体编程之WinForms控件简介
0
813
晁红叶
2026-03-30
安全
基于.NET的Windows窗体编程之WinForms控件简介
0
749
徙办
2026-03-30
业界
【译】 再次革新 .NET 的构建和发布方式(三)
0
782
轨项尺
2026-03-30
回复
(24)
纪晴丽
2026-1-17 00:12:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个好,看起来很实用
染悄
2026-1-17 12:24:33
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
梨恐
2026-1-18 03:38:35
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
鼓励转贴优秀软件安全工具和文档!
趣侮
2026-1-18 13:38:30
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
余思洁
2026-1-22 03:42:55
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
娥搽裙
2026-1-24 00:28:56
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
昆拗干
2026-1-28 01:58:55
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
枢覆引
2026-1-30 04:06:11
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
颐港
2026-2-2 04:11:28
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
笃扇
2026-2-2 13:27:59
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
玛凶
2026-2-3 07:22:15
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
赖琳芳
2026-2-4 06:31:51
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
兼罔
2026-2-7 22:54:51
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢发布原创作品,程序园因你更精彩
遏筒煽
2026-2-8 08:43:51
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
轩辕琳芳
2026-2-8 12:35:32
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
跟尴
2026-2-9 01:00:50
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个有用。
接快背
2026-2-9 17:45:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢楼主提供!
溶绚
2026-2-10 04:06:21
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
挠溃症
2026-2-13 10:00:12
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
琦谓
2026-2-13 10:00:12
关注
0
粉丝关注
30
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9524
6
韶又彤
9916
7
宋子
9880
8
荪俗
9020
9
闰咄阅
9999
10
刎唇
9999
查看更多
今日好文热榜
444
Typora 中设置图像上传到博客园中
870
Typora 中设置图像上传到博客园中
602
Typora 中设置图像上传到博客园中
49
Typora 中设置图像上传到博客园中
345
Typora 中设置图像上传到博客园中
122
Typora 中设置图像上传到博客园中
412
Typora 中设置图像上传到博客园中
680
Typora 中设置图像上传到博客园中
757
Typora 中设置图像上传到博客园中
738
Typora 中设置图像上传到博客园中
825
Typora 中设置图像上传到博客园中
773
Typora 中设置图像上传到博客园中
973
Typora 中设置图像上传到博客园中
975
Typora 中设置图像上传到博客园中
839
Typora 中设置图像上传到博客园中
469
Typora 中设置图像上传到博客园中
348
Typora 中设置图像上传到博客园中
428
Typora 中设置图像上传到博客园中
644
Typora 中设置图像上传到博客园中
266
Typora 中设置图像上传到博客园中