解决net core while true 内存堆积问题

 

 

在 .NET Core 中,可以使用 Task.Delay 方法结合递归调用来实现无限循环的方式,并且每次循环都释放内存。

下面是一个示例代码:

 
using System;
using System.Threading;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main(string[] args)
    {
        await RunLoop();
    }

    public static async Task RunLoop()
    {
        while (true)
        {
            // 执行你的逻辑代码

            // 释放内存
            await Task.Delay(1000); // 延迟一段时间,让垃圾回收器有机会释放内存
            GC.Collect(); // 强制进行垃圾回收
            GC.WaitForPendingFinalizers(); // 等待垃圾回收完成
        }
    }
}

  


 

在上述示例中,我们使用 Task.Delay 方法来延迟一段时间,以便让垃圾回收器有机会释放内存。然后,我们使用 GC.Collect 方法强制进行垃圾回收,并使用 GC.WaitForPendingFinalizers 方法等待垃圾回收完成。这样可以在每次循环中释放内存。

请注意,强制进行垃圾回收可能会对性能产生一定影响,因此在实际应用中需要根据具体情况进行权衡和调整。另外,垃圾回收器的行为也受到多个因素的影响,包括系统资源、垃圾回收器的配置等。因此,释放内存的效果可能因环境而异。

posted @ 2023-08-11 11:31  清风神剑  阅读(52)  评论(0编辑  收藏  举报