社区
.NET Framework
帖子详情
关于.NET程序内存的问题
wtk13
2008-09-23 01:37:42
各位好,有问题向大家请教
我们的服务程序经常的会报OutOfMemery的错误,那个时候内存只为700多兆,我们的服务器有4G的内存
我也知道报OutOfMemery是由于.NET申请内存时申请不到报出的错误,
所以我想有没有什么办法,让我的程序运行时就给他分配好一个大内存,
然后让它自己不用向系统申请内存了,而是直接申请自己分配好的内存,
谢谢大家
...全文
129
12
打赏
收藏
关于.NET程序内存的问题
各位好,有问题向大家请教 我们的服务程序经常的会报OutOfMemery的错误,那个时候内存只为700多兆,我们的服务器有4G的内存 我也知道报OutOfMemery是由于.NET申请内存时申请不到报出的错误, 所以我想有没有什么办法,让我的程序运行时就给他分配好一个大内存, 然后让它自己不用向系统申请内存了,而是直接申请自己分配好的内存, 谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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.安装_注册机
SciTech
.NET
.Memory.Profiler.v4.0.114就是这样一款专门用于查找
.NET
应用
程序
内存
泄漏并优化
内存
使用的工具,它支持C#、VB
.Net
以及其他
.NET
语言。 一、
内存
泄漏及其影响
内存
泄漏是指
程序
在申请
内存
后,无法释放已...
.NET
Framework 4.0.30319
- 元数据是嵌入在
.NET
程序
集中的信息,它描述了类、方法、属性等,使得反射成为可能,允许
程序
在运行时动态发现和使用类型。 4. **ASP
.NET
**: - ASP
.NET
是
.NET
Framework的一部分,用于构建Web应用
程序
。它提供...
Quartz
.NET
官方源码及演示例子
3. **changelog.txt**:变更日志,记录了Quartz
.NET
各版本的更新内容和修复的
问题
。 4. **license.txt**:许可协议,规定了使用Quartz
.NET
的法律条款。 5. **readme.txt**:通常包含项目简介、安装指南、运行示例...
.net
framework 4.0 win7 64独立安装
程序
然而,64位系统并非天生就能运行所有的
.NET
程序
,特别是那些依赖于32位
.NET
Framework的
程序
。因此,独立的64位安装
程序
可以确保系统能够支持所有类型的
.NET
应用
程序
。 安装
.NET
Framework 4.0的过程如下: 1. 下载...
.NET
Memory Profiler
SciTech NET Memory Profiler-找到
内存
泄漏并优化
内存
使用针对C#,VB
.Net
, 或其它
.Net
程序
。 Name:www.piaodown.com Serial:6981-0395-2848-8183-8795
.NET Framework
17,747
社区成员
24,327
社区内容
发帖
与我相关
我的任务
.NET Framework
.NET技术 .NET Framework
复制链接
扫一扫
分享
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章