gpt4 book ai didi

c# - 快速增加内存使用率C#

转载 作者:行者123 更新时间:2023-12-03 13:23:22 24 4
gpt4 key购买 nike

我的代码基本上是从链接中打开网页+ .ts文件并重复该代码,但是问题是每次它都会增加内存使用量,并且从不删除旧数据。 2小时后,它将使用超过2GB的空间。
关于如何解决此问题的任何想法?
我正在使用“Leaf.Xnet”库进行请求,这是创建线程的方式:

new Thread(new ThreadStart(WebHelper.Check)).Start();
主要代码:
public static void Check()
{
HttpRequest request = null;

while (Form1.isRuning)
{
Application.DoEvents();

try
{
request = new HttpRequest();
if (!ProxyManager.updating)
{
switch (ProxyManager.curProxyType)
{
case ProxyManager.proxyType.http:
request.Proxy = HttpProxyClient.Parse(ProxyManager.NextProxy(ProxyManager.proxyType.http));
break;
case ProxyManager.proxyType.socks4:
request.Proxy = Socks4ProxyClient.Parse(ProxyManager.NextProxy(ProxyManager.proxyType.socks4));
break;
case ProxyManager.proxyType.socks5:
request.Proxy = Socks5ProxyClient.Parse(ProxyManager.NextProxy(ProxyManager.proxyType.socks5));
break;
}
}
else
{
Thread.Sleep(2000);
Check();
}

request.UserAgentRandomize();
request.AddHeader(HttpHeader.Referer, "https://somesite.com");
request.KeepAlive = true;
request.ConnectTimeout = Form1.timeOut;
request.Reconnect = true;
string html = request.Get(Form1.link, null).ToString();
string auth = html.Substring(",[{\"src\":\"", "\"");
string sign = html.Substring("144p.apt?wmsAuthSign=", "\"");

if (auth != null && sign != null)
{
string auth2 = "";
foreach (char item in auth)
{
if (item != '\\')
auth2 += item;
}

auth = auth2;
string cdn = auth.Substring("https://", ".");
string id = auth.Substring("video/", "-");
if (cdn != null && id != null)
{
Random rnd = new Random();
request.Get(auth);
Form1.sended++;
WriteStat();
}
html = null;
auth = null;
auth2 = null;
sign = null;
}
}
catch (HttpException)
{
Check();
}
catch (ProxyException)
{
Check();
}
}
}

最佳答案

我不完全确定这是否可以解决您的问题,但是对于您启动的每个线程,您几乎都调用了无限次数的Check()执行。由于Check包含while循环,因此无论如何线程将永远在后台运行,现在您要在其之上再次调用该方法。这意味着在Check方法范围内创建的所有内容都不会被垃圾收集,并会增加您的内存。

Replace all calls to Check() with continue which will stop the execution in the while loop and start over.


另外,请考虑不使用线程,而是使用任务。
同样,您也不要处置 HttpRequest

关于c# - 快速增加内存使用率C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63391125/

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