社区
.NET Framework
帖子详情
关于.NET程序内存的问题
wtk13
2008-09-23 01:37:42
各位好,有问题向大家请教
我们的服务程序经常的会报OutOfMemery的错误,那个时候内存只为700多兆,我们的服务器有4G的内存
我也知道报OutOfMemery是由于.NET申请内存时申请不到报出的错误,
所以我想有没有什么办法,让我的程序运行时就给他分配好一个大内存,
然后让它自己不用向系统申请内存了,而是直接申请自己分配好的内存,
谢谢大家
...全文
123
12
打赏
收藏
关于.NET程序内存的问题
各位好,有问题向大家请教 我们的服务程序经常的会报OutOfMemery的错误,那个时候内存只为700多兆,我们的服务器有4G的内存 我也知道报OutOfMemery是由于.NET申请内存时申请不到报出的错误, 所以我想有没有什么办法,让我的程序运行时就给他分配好一个大内存, 然后让它自己不用向系统申请内存了,而是直接申请自己分配好的内存, 谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wtk13
2008-09-30
打赏
举报
回复
还有人帮我分析一下内存的问题嘛?
wtk13
2008-09-24
打赏
举报
回复
其实做为一个大应用的服务程序内存大应该是很正常的,
我们的应用是REMOTING架构的,高峰时会有200多个客户端连入系统进行复杂的业务操作,
所以我认为内存大到700M,哪怕高过1G也应该是正常的,可是系统确在使用了700内存后就撑不住了,
而操作系统可用内存还是那么的多,所以提出了这个问题,可不可以能让它使用那么大的内存。
shalen520
2008-09-23
打赏
举报
回复
gen 2 heap特别的大?
看起来很多对象经历了两次以上的GC仍然存活,检查一下 static/shared/global/cache variable,是不是有引用了这些对象
shalen520
2008-09-23
打赏
举报
回复
看帮助吧,有详细解释的,网上也有很多教程
wtk13
2008-09-23
打赏
举报
回复
[Quote=引用 7 楼 shalen520 的回复:]
启动windbg,设置好符号文件路径,获取full dump,然后分析dump的内存使用情况,查看异常链,检查线程情况等
remoting要特别当心大对象的序列化,有时候一个序列化操作就可以搞死服务器,见过有人序列化100M的dataset,然后CLR申请了1G内存,结果当然是OOM...
[/Quote]
十分感谢,我只会简单的WINDBG命令还不会检查内存的命令,教我几个命令吧。
谢谢。
shalen520
2008-09-23
打赏
举报
回复
启动windbg,设置好符号文件路径,获取full dump,然后分析dump的内存使用情况,查看异常链,检查线程情况等
remoting要特别当心大对象的序列化,有时候一个序列化操作就可以搞死服务器,见过有人序列化100M的dataset,然后CLR申请了1G内存,结果当然是OOM...
sxmonsy
2008-09-23
打赏
举报
回复
不要太相信自带的GC.自己写最好。
wtk13
2008-09-23
打赏
举报
回复
我们的服务程序是一个REMOTING的服务程序。
看有什么能帮我的吗?
wtk13
2008-09-23
打赏
举报
回复
[Quote=引用 1 楼 shalen520 的回复:]
自己管理内存做不到,因为内存由.NET CLR管理,应用程序无法直接控制内存分配和释放
OutOfMemoryException,说到底是CLR在GC过之后仍然找不到一块连续的64M内存而引发的,导致的原因可能很多,比如:大量的root对象,其他应用占用了很多内存,内存有很多碎片等;可以尝试为应用程序池加大虚拟内存上限,或者改一下machine.config,加大.net内存的阀值
如果还不行,就要用windbg等比较专业的工具来分析内存使用情况,找出原因…
[/Quote]
60%的默认的阀值应该是够了,也没有突破它。
我用ProcessExplorer看了看,线程数很少,打开的端口也少,
只是他的gen 2 heap 特别的大,理论上是应该被垃圾回收掉的,但是回收非常的慢。
WINDBG学的不精啊,只会简单的调试。
wtk13
2008-09-23
打赏
举报
回复
2楼的同志,在200多个工程的解决方案和上百万行代码的程序里,你教教我如何检查内存泄露。
jzywh
2008-09-23
打赏
举报
回复
检查内存泄露
shalen520
2008-09-23
打赏
举报
回复
自己管理内存做不到,因为内存由.NET CLR管理,应用程序无法直接控制内存分配和释放
OutOfMemoryException,说到底是CLR在GC过之后仍然找不到一块连续的64M内存而引发的,导致的原因可能很多,比如:大量的root对象,其他应用占用了很多内存,内存有很多碎片等;可以尝试为应用程序池加大虚拟内存上限,或者改一下machine.config,加大.net内存的阀值
如果还不行,就要用windbg等比较专业的工具来分析内存使用情况,找出原因了
SciTech
.NET
.Memory.Profiler.v4.0.114.安装_注册机
NET Memory Profiler-找到
内存
泄漏并优化
内存
使用针对C#,VB
.Net
, 或其它
.Net
程序
。 包含安装+注册机
.NET
Memory Profiler
SciTech NET Memory Profiler-找到
内存
泄漏并优化
内存
使用针对C#,VB
.Net
, 或其它
.Net
程序
。 Name:www.piaodown.com Serial:6981-0395-2848-8183-8795
SciTech
.NET
.Memory.Profiler.v4.0.114. 安装+注册机
NET Memory Profiler-找到
内存
泄漏并优化
内存
使用针对C#,VB
.Net
, 或其它
.Net
程序
。 包含安装+注册机
内存
搜索、修改器(附VC6源码)
现将
程序
及源码附上,仅供需学习的同僚参考,实不敢说实用性有多强,即使我也用来修改过CS(Counter-Strike)的血量。 开发+测试环境:Windows XP SP3 + VC++6.0 SP6 博客原文:...
[14本经典Android开发教程]-3-Android SDK 中文开发文档
· 丰富的开发环境 包括设备模拟器,调试工具,
内存
及性能分析图表,和Eclipse集成开发环境插件 Android 架构 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。 已上传2本: [14本经典Android...
.NET Framework
17,739
社区成员
24,334
社区内容
发帖
与我相关
我的任务
.NET Framework
.NET技术 .NET Framework
复制链接
扫一扫
分享
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章