当前位置:  开发笔记 > 编程语言 > 正文

如何释放虚拟内存?

如何解决《如何释放虚拟内存?》经验,为你挑选了1个好方法。

我有一个爬虫应用程序(使用C#)从Web下载页面.应用程序需要更多的虚拟内存,即使我处理每个对象甚至使用GC.Collect() .

这个,有10个线程,每个线程都有一个下载页面的套接字.在每个线程中,我有一个byte[] buffer存储页面内容,并有一个string str_content我存储在其中,页面内容在字符串中.我有一个Sytem.Timer每3秒钟的一次,如果每个线程都被停止,给它分配新线程并启动它.

我使用dispose方法甚至GC.Collect()在我的应用程序中使用,但是在3小时内,我的应用程序在虚拟内存上占用500 MB(在Process explorer中的私有字节上为500 MB).然后我的系统将挂起,我应该重新启动我的电脑.

    会不会很粗鲁,如果我指定我的byte[]并且string为空?

    有什么方法可以用来释放虚拟内存吗?

谢谢 .



1> Mitchel Sell..:

首先,你不应该打电话给gc.collect(),因为这是一个代价高昂的电话,而且不应该是必要的.

如果您看到增长并且您仍然在呼叫gc.collect()您拥有仍然具有引用的资源,则无法收集它们.

我将开始查看您的代码并确保所有对象都在适当的范围内声明,您正在使用Using Statement语法来确保正确清理实现IDisposable的项目并对代码进行全面检查.

下一步是采用像ANTS探测器之类的工具,看一下实际存储在内存中的内容.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有