Уменьшение памяти моего приложения - PullRequest
0 голосов
/ 08 марта 2012

Я занимаюсь разработкой приложения на C # с ограниченной памятью. Я инициализирую большое количество объектов, подобных приведенным ниже, которые имеют несколько свойств, занимающих около 20 МБ. Как я могу уменьшить объем памяти, используемой моим приложением.

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 ]

4 голосов
/ 08 марта 2012

Простая точка - не загружайте их в память.Расточительно и совершенно не нужно.эй, когда я заказываю супертанкер, полный масла, чтобы заменить масло в моей машине, большая часть его - это отходы, что я могу сделать - ну, заказывайте только столько масла, сколько вам нужно, а не супертанкер, полный.

Знаете, базы данных существуют по какой-то причине.

2 голосов
/ 08 марта 2012

Либо не загружайте их в память, либо загружайте их только тогда, когда они вам нужны, или используйте шаблон Flyweight, чтобы объединить некоторые свойства.

Возможно, шаблон прокси также может быть полезен в некотором роде, потому что вы не можете позволить себе загружать / выгружать такие большие объекты.

Просто добавляю идеи, но 20-мегабайтные объекты довольно безумны!У вас есть изображения и тому подобное?Или только свойства?Потому что из того, что я вижу, я могу представить, что вы могли бы поделиться хотя бы некоторыми свойствами / объектами!

Фабричный шаблон также может пригодиться, чтобы ограничить бесполезные экземпляры и позволить вам легко делиться экземплярами!

Ресурсы:

Заводской шаблон

Прокси-шаблон

Шаблон с навеской

Образец прототипа

1 голос
/ 08 марта 2012

Попробуйте Lazy Initialization: http://msdn.microsoft.com/en-us/library/dd997286.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...