有一些文章 How to get object size in memory ? 但他们没有解释如何在内存中获取对象的大小。
当我使用时:
System.Runtime.InteropServices.Marshal.SizeOf(arrayListObject)
我收到错误:
输入'System.Collections.ArrayList' 不能作为一个无人管理的集合 结构体;没有意义的大小或 可以计算偏移量。
我也无法获得所有可用内存的数量,因为我想在具有大量线程的Web应用程序上执行此计算,因此需要确切知道需要特定对象的内存量。
答案 0 :(得分:2)
您希望在代码中找出托管对象的内存大小 - 根据this博客条目,这是不可能的。
您需要使用内存分析器来执行此操作(例如Ants profiler)。
答案 1 :(得分:1)
如果由于可能的优化而想知道这一点:使用内存分析器。
答案 2 :(得分:0)
那么序列化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;