我正在开发内存有限的C#应用程序。我初始化了大量的对象,如下面的对象有几个属性,占用大约20MB。如何减少应用程序使用的内存量。
public class BusStop
{
private List<BusRoute> busRoutes = new List<BusRoute>();
private string name;
// ... Other properties omitted like Code, ID, Location, etc.
public BusStop(string name)
{
this.name = name;
}
public List<BusStop> BusRoutes
{
get { return this.busRoutes; }
}
public string Name
{
get { return this.name; }
}
}
public class BusRoute
{
private List<BusStop> busStops = new List<BusStop>();
private string name;
// ... Other properties omitted like Code, ID, Location, etc.
public BusStop(string name)
{
this.name = name;
}
public List<BusStop> BusStops
{
get { return this.busStops; }
}
public string Name
{
get { return this.name; }
}
}
答案 0 :(得分:4)
简单点 - 不要将它们加载到内存中。浪费,完全不需要。嘿,当我订购一个装满油的超级油轮替换我车里的油时,大部分都是浪费,我能做什么 - 好吧,只需要你需要的油,而不是超级油轮。
数据库是有原因的,你知道。
答案 1 :(得分:2)
要么不将它们加载到内存中,要么只在需要时加载它们,或者使用Flyweight模式将一些属性放在一起。
也许代理模式在某种程度上也可能有用,因为你无法负载加载/卸载这么大的对象。
只是投入想法,但20mb对象非常疯狂!你有图像和类似的东西吗?还是只有属性?因为从我看到的,我可以想象你至少可以分享一些属性/对象!
工厂模式也可以派上用场,以限制无用的实例化,并使您能够轻松地共享实例!
资源:
答案 2 :(得分:1)