[英]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.