[严重问题]如何提高程序性能,解决内存不能为READ问题?

yifan5234 2006-06-27 01:50:16
情况描述:
我做了一个短信服务程序,是用WIN FORM程序实现的。其中开了三个线程,分别监听数据库、服务器端消息(短信MO)、系统时间。其中用到由一个VC的DLL来做与服务器间的通讯。
病状:
现在程序每隔两天或五天或者一天都会出现一次“内存不能为READ”的系统提示,点确定后程序终止。

目前情况:
开始我怀疑是因为没有释放资源、或者是没处理好异常。但经我反复的检验和修整代码后情况依旧!.NET具备垃圾回收功能,并坚信.net不存在内存泄漏问题,就是有程序错误跳出来的也不应该是内存不能为READ的系统错误信息呀!
通过GOOGLE我怀疑ThreadPool的问题,可是我根本就没有用到它。
再GOOGLE我怀疑net中的LOH(Large Object Heap)害人不浅,你如果频繁的创建大于85k的大对象,比如用string表示的文本文档,就会感觉出现了内存泄漏,应用程序占用的内存一个劲儿往上升,直到出现out of memory为止。但还是找不到解决的方法...

问题:
1.问题出在哪里?如何做象内存出错的跟踪调试?
2.如何解决?如何让我们的程序稳定起来,长久不衰!

...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
addwing 2006-06-28
  • 打赏
  • 举报
回复
关注。。。学习。。。帮你顶。。。
Knight94 2006-06-27
  • 打赏
  • 举报
回复
你可以定期调用gc.Collect方法去回收内存,看看这样是否效果好些。

至于你所说的现象,用日志来输出看看,其是否有规律。
aSalt 2006-06-27
  • 打赏
  • 举报
回复

"内存不能为READ",这个异常"的确"不像是你能用.net写代码写出来的。

呵呵.看看是否VC的组件要升级了.你是什么系统啊?
yifan5234 2006-06-27
  • 打赏
  • 举报
回复
没有办法调试,只能看到WINDOWS弹出的 内存不能为READ 的对话框
听说windbg可以调试,没用过
zahuifan 2006-06-27
  • 打赏
  • 举报
回复
实在不懂,顶
neilwang 2006-06-27
  • 打赏
  • 举报
回复
"内存不能为READ",这个异常不像是你能用.net写代码写出来的。
出错了有没有调试过呢?

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧