получить размер DataTable или ArrayList в памяти - PullRequest
3 голосов
/ 04 марта 2010

Есть несколько статей о Как получить размер объекта в памяти? но они не объясняют, как получить размер объекта в памяти.

когда я использую:

System.Runtime.InteropServices.Marshal.SizeOf (arrayListObject)

я получаю ошибку:

Тип 'System.Collections.ArrayList' не может быть маршалинг как неуправляемый состав; нет значимого размера или смещение может быть вычислено.

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

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

Вы хотите узнать размер памяти управляемых объектов в коде - согласно этой записи в блоге это невозможно.

Для этого вам нужно использовать профилировщик памяти (например, Ants profiler ).

1 голос
/ 04 марта 2010

Если вы хотите узнать это из-за возможных оптимизаций: используйте профилировщик памяти.

0 голосов
/ 18 июля 2013

А как насчет сериализации DataTable, а затем проверки его длины?

System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream stream = new System.IO.MemoryStream();
formatter.Serialize(stream, YourDataTable);
long length = stream.Length;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...