C#/.NET: использование памяти Словаря

Если вы использовали --module, вы, вероятно, просто должны сделать:

import some_package

Другой подход к использованию ctypes:

import ctypes
my_package = ctypes.cdll.LoadLibrary('./some_package.so')
6
задан core 12 May 2009 в 02:03
поделиться

3 ответа

Определите размер каждого элемента и умножьте его на Dictionary.Count

Здесь показан один способ :

Примерный способ определения размер использования объекта в памяти может быть выполняется путем проверки общей памяти до и после создания объект. В следующем примере это предполагается, что у вас есть класс с именем foo.

 long StopBytes = 0;
foo myFoo;

long StartBytes = System.GC.GetTotalMemory (true);
myFoo = новый foo ();
StopBytes = System.GC.GetTotalMemory (истина);
GC.KeepAlive (MYFOO); // Это гарантирует, что ссылка на объект сохраняет объект в памяти

MessageBox.Show ("Размер" + ((длинный) (StopBytes - StartBytes)). ToString ());

В C # есть оператор sizeof, который работает так же, как и в C / C ++, но возвращает размер поля этого типа. Таким образом, для ссылочных типов (класс, а не структура) он всегда будет возвращать размер указателя (4 в 32-битных системах). Вместо этого используйте System.Runtime.InteropServices.Marshal.SizeOf () .

5
ответ дан 17 December 2019 в 04:51
поделиться

Я не верю, что существует какой-либо API, который даст вам истинный размер объекта, но его можно определить, измерив объем памяти, использованной до и после создания объекта; однако это на самом деле не является потокобезопасным.

Вы можете использовать System.Runtime.InteropServices.Marshal.SizeOf (), даже если это не даст вам точного размера, это даст вам точную точку сравнения, чтобы вы могли что-то сказать например: если размер объекта увеличивается на X%, удалите количество элементов Y.

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

1
ответ дан 17 December 2019 в 04:51
поделиться

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

-1
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: