登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
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
220
咒卖箴
2026-03-30
业界
分享 5 种 .NET 桌面应用程序自动更新解决方案
0
997
寥唏
2026-03-30
业界
.NET Framework 中的 DataObject
0
390
胰芰
2026-03-30
业界
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
0
98
告陕无
2026-03-30
业界
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
0
503
战匈琼
2026-03-30
业界
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
0
819
里豳朝
2026-03-30
安全
基于.NET的Windows窗体编程之WinForms控件简介
0
811
晁红叶
2026-03-30
安全
基于.NET的Windows窗体编程之WinForms控件简介
0
748
徙办
2026-03-30
业界
【译】 再次革新 .NET 的构建和发布方式(三)
0
781
轨项尺
2026-03-30
回复
(24)
纪晴丽
2026-1-17 00:12:18
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
染悄
2026-1-17 12:24:33
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
梨恐
2026-1-18 03:38:35
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
趣侮
2026-1-18 13:38:30
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
余思洁
2026-1-22 03:42:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
娥搽裙
2026-1-24 00:28:56
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
昆拗干
2026-1-28 01:58:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
枢覆引
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
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
懂技术并乐意极积无私分享的人越来越少。珍惜
赖琳芳
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
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
跟尴
2026-2-9 01:00:50
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个有用。
接快背
2026-2-9 17:45:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢楼主提供!
溶绚
2026-2-10 04:06:21
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
挠溃症
2026-2-13 10:00:12
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,试用一下
下一页 »
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
神泱
9522
6
韶又彤
9916
7
宋子
9878
8
荪俗
9020
9
闰咄阅
9997
10
刎唇
9999
查看更多
今日好文热榜
580
Qt 技巧笔记(十四):QTableWidget 表格组
259
【JavaScript高级编程】拆解函数流水线 上
442
Claude 绝密模型泄露!Sora 关停、AI 工具
388
P10387 [蓝桥杯 2024 省 A] 训练士兵
110
电容是什么?一个“快充快放”的微型充电宝
943
做了一个网页天气可视化 2
694
Redis命令处理机制源码探究
722
读2025世界前沿技术发展报告27核力量
1
读2025世界前沿技术发展报告27核力量
2
读2025世界前沿技术发展报告27核力量
1
读2025世界前沿技术发展报告27核力量
1
读2025世界前沿技术发展报告27核力量
1
读2025世界前沿技术发展报告27核力量
1
Claude 绝密模型泄露!Sora 关停、AI 工具
1
做了一个网页天气可视化 2
1
做了一个网页天气可视化 2
1
Redis命令处理机制源码探究
1
【JavaScript高级编程】拆解函数流水线 上
1
Claude 绝密模型泄露!Sora 关停、AI 工具
1
Claude 绝密模型泄露!Sora 关停、AI 工具