繁体   English   中英

C# 任务内存泄漏

[英]C# Task memory leak

我在 C# 中的 Task 对象存在内存泄漏问题。

这段代码会给我内存泄漏:

 Task task = Task.Run(() =>
            {
                result = analysis.InspectImageAsync(arg1, arg2);
            });

    await task;



    task.ContinueWith( (thisTask) =>
            {
                MessageBox.Show("kill");
                thisTask.Dispose();
                thisTask = null;
                GC.Collect();
            });

如果我在没有 Task.Run() 的情况下运行它:

result = analysis.InspectImageAsync(arg1, arg2);

一切都很好,我的记忆是平坦的(没有泄漏!)......但我需要这是异步的。

我遇到了类似的问题。 你在使用内存流吗?

就我而言,

我在内存流中放了一个 5MB 的图像并使用它,但没有真正的内存泄漏,但它导致了内存不足错误。

如果只是64bit的话,通过Visual Studio打开就和32bit一样了。 在debug模式下,和32位环境一样,所以出现的快一点,在release模式下,是64位环境,所以出现的晚一点。

如果在任务管理器中内存继续增加,你应该考虑Dispose,但如果出现内存不足错误,则应该检查是否使用了需要分配连续地址的对象。

使用task.Dispose(),来处理任务使用的内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM