减少我的应用程序的内存占用

时间:2012-03-08 09:23:32

标签: c# .net memory memory-management

我正在开发内存有限的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; }
    }
}

3 个答案:

答案 0 :(得分:4)

简单点 - 不要将它们加载到内存中。浪费,完全不需要。嘿,当我订购一个装满油的超级油轮替换我车里的油时,大部分都是浪费,我能做什么 - 好吧,只需要你需要的油,而不是超级油轮。

数据库是有原因的,你知道。

答案 1 :(得分:2)

要么不将它们加载到内存中,要么只在需要时加载它们,或者使用Flyweight模式将一些属性放在一起。

也许代理模式在某种程度上也可能有用,因为你无法负载加载/卸载这么大的对象。

只是投入想法,但20mb对象非常疯狂!你有图像和类似的东西吗?还是只有属性?因为从我看到的,我可以想象你至少可以分享一些属性/对象!

工厂模式也可以派上用场,以限制无用的实例化,并使您能够轻松地共享实例!

资源:

Factory pattern

Proxy pattern

Flyweight pattern

Prototype pattern

答案 2 :(得分:1)