如何在HttpRuntime.Cache中获取对象的大小?

我目前在ASP.NET HttpRuntime.Cache中存储了许多不同类型的对象,我想知道是否有办法弄清楚每个对象有多大?

看看这些问题:

使用C#获取字段大小(以字节为单位)
找出.net对象的大小

特别是,在这些问题中寻找Jon Skeet的答案。 他们会告诉你为什么数字不准确。

至于估计,除非您的对象满足某些标准,否则无法做到这一点。

例如,如果缓存中有许多对象,共享对某些常见对象实例的引用,则序列化缓存中的其中一个对象也会序列化这些常见对象的副本,从而使结果膨胀。

您可以做的一件事是将对象序列化为磁盘上的文件。 这应该给你一个想法。

ASP联盟的缓存管理器也可能有所帮助