如何解决如何避免过度使用内存
客户抱怨以下组件的内存使用量不断增加。我该如何处理?
这就是 Resource
类的工作原理:
using System;
using System.Collections.Generic;
public class Resource : Idisposable
{
private List<string> tasks = new List<string>();
public int Id { get; private set; }
public IEnumerable<string> Tasks { get { return this.tasks; } }
public Resource(int id)
{
this.Id = id;
}
public void PerformTask(string task)
{
if (this.tasks == null)
throw new ObjectdisposedException(this.GetType().Name);
this.tasks.Add(task);
}
public void dispose()
{
this.tasks = null;
}
}
这是跑步类的工作方式
public class Runner
{
private readonly Dictionary<int,Resource> resources = new Dictionary<int,Resource>();
public IEnumerable<Resource> Resources { get { return this.resources.Values; } }
public Resource AcquireResource(int id)
{
Resource w = null;
if (!this.resources.TryGetValue(id,out w))
{
w = new Resource(id);
this.resources.Add(id,w);
}
return w;
}
public void ReleaseResource(int id)
{
Resource w = null;
if (!this.resources.TryGetValue(id,out w))
throw new ArgumentException();
w.dispose();
}
public static void Main(string[] args)
{
var d = new Runner();
d.AcquireResource(1).PerformTask("Task11");
d.AcquireResource(2).PerformTask("Task21");
Console.WriteLine(string.Join(",",d.AcquireResource(2).Tasks));
d.ReleaseResource(2);
d.AcquireResource(1).PerformTask("Task12");
Console.WriteLine(string.Join(",d.AcquireResource(1).Tasks));
d.ReleaseResource(1);
}
}
即使使用的资源应该由组件释放。这是我从互联网上得到的 - 我该如何处理这种情况?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。