Простой способ отслеживать, сколько памяти занимает список? - PullRequest
1 голос
/ 16 августа 2011
public class Players
{
    public int GUID { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
    public Clans Clan { get; set; }

    public PlayerType Type { get; set; }
    public Groups Access { get; set; }
    public int Level { get; set; }
    public int RoomID { get; set; }

    public IPAddress IP { get; set; }
    public bool IsPlaying { get; set; }
    public bool IsProtected { get; set; }
    public bool IsBanned { get; set; }
    public bool IsInvisible { get; set; }

    public bool IsOnline()
    {
        return (IPAddress.Parse("0.0.0.0").Equals(this.ExtIP)) ? false : true;
    }

    public string GetIP()
    {
        return this.ExtIP.ToString();
    }
}

У меня есть список, который использует вышеупомянутый класс, и я хотел бы знать, как я могу отслеживать, сколько памяти занимает этот список для каждого нового добавленного пользователя или каждого изменения, внесенного в любого пользователя, уже находящегося в нем, иликак рассчитать это (если это возможно объяснить простым способом, это никогда не было хорошей математикой хе-хе)?

Если есть простой код, который может показать мне, что после обновления списка или ввода / вывода новой записиЯ также был бы признателен.

Это приложение работает на linux под mono и использует MySQL в качестве базы данных, я много полагался на базу данных и, поскольку я запускаю ее на VPS, она потребляет много ресурсов процессора / памяти.

Чтобы оптимизировать его, я рассматриваю возможность загрузки некоторых данных при запуске и управления обновлениями каждые X минут и обновления только важных данных, а не запросов к базе данных для получения большей информации, которую мне нужно использовать.

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

1 Ответ

1 голос
/ 16 августа 2011

Вы можете использовать метод GC.GetTotalMemory () для регистрации использования памяти моментального снимка на момент времени:

// Measure starting point memory use
GCMemStart = System.GC.GetTotalMemory(true);

// Perform allocations

GCMemEnd = System.GC.GetTotalMemory(true);

[Если параметр forceFullCollectionЗначение true, этот метод ожидает небольшой интервал перед возвратом, пока система собирает мусор и завершает объекты]

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