gpt4 book ai didi

c# - 如何释放虚拟内存?

转载 作者:行者123 更新时间:2023-11-30 19:07:54 25 4
gpt4 key购买 nike

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

这个,有10个线程,每个线程都有一个下载页面的socket。在每个线程中,我都有一个 byte[] buffer 来存储页面的内容,并且有我存储在其中的 string str_content,页面内容为字符串。我有一个 Sytem.Timer 每 3 秒检查一次,如果每个线程都已停止,为其分配新线程并启动它。

我在我的应用程序中使用了 dispose 方法,甚至使用了 GC.Collect(),但是我的应用程序在 3 小时内就完成了500 MB 虚拟内存(进程资源管理器中的私有(private)字节 500 MB)。然后我的系统将挂起,我应该重新启动我的电脑。

  1. 如果我将我的 byte[]string 分配给 null 会很粗鲁吗?

  2. 有什么方法可以释放虚拟内存吗?

谢谢。

最佳答案

首先,您无论如何都不应该调用 gc.collect(),因为这是一个代价高昂的调用,而且不应该是必需的。

如果您看到增长并且您仍在调用 gc.collect(),您的资源仍然有引用,因此无法收集它们。

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

下一步是使用 ANTS profiler 等工具查看内存中实际存储的内容。

关于c# - 如何释放虚拟内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com