愚蠢的问题,但在我正在进行的winforms应用程序中,我想获得内存中保存的List<[SomeObject]>
分配/使用的字节数(用于统计目的)。这可能吗?我通过可能的选项进行了搜索,但显然没有myList.GetTotalBytes()
方法。
答案 0 :(得分:10)
这取决于你的意思。您可以预测列表本身将使用多少字节 - 但是如果列表符合收集条件,则与预测垃圾收集符合条件的字节数不同。
列表中的位:
T[]
- 对只有列表才有权访问的数组的引用)棘手的一点是决定计算多少。其中每一个都很容易计算(例如,如果你知道T是一个引用类型),但是你想要计算列表中引用的对象吗?那些参考文献是唯一的吗?
你说你想知道“出于统计目的” - 你能更准确吗?如果您可以说出您真正感兴趣的内容(以及有关列表中的内容以及是否可能存在对相同对象的其他引用的更多信息),我们可能会提供更多帮助。
答案 1 :(得分:6)
这可能是一个充满了马匹的答案,但是我要说出来,如果你正在做统计比较,那就把对象的二进制序列化做成{{1}然后查看其MemoryStream
属性:
Length
请注意,这可能会在不同版本的框架之间发生变化,并且仅对单个程序中对象图之间的比较有用。
答案 2 :(得分:5)
我不确定运行时是否提供了获取对象大小的可靠编程方法,但是有一些选项可供您使用: