Visual Studio观察窗口查看对象的大小/内存占用

时间:2012-01-31 22:23:20

标签: .net visual-studio visual-studio-2010 memory

不确定是否可能,但我很好奇,到目前为止我还没有找到任何运气。我想知道是否有人知道从VS监视窗口中确定内存中对象大小的方法。显然,一个分析器可以做到这一点,但只是从VS中获取这个快速快照是非常方便的。这可能吗?

3 个答案:

答案 0 :(得分:3)

不确定这是否有助于其他人登陆此问题。

在VS2015中,您可以在断点处停下来并使用Diagnostic Tools窗口。

  1. 菜单
  2. 调试
  3. 显示诊断工具
  4. 点击Take Snapshot
  5. 等待创建快照。
  6. 点击ObjectsHeap Size
  7. 中的蓝色超链接
  8. 查看变量的包容大小。
  9. HTH。

答案 1 :(得分:2)

我认为这是不可能的。请参阅Size of a managed object(相当旧,但似乎仍然有效)。

您可以在立即窗口中拥有对象大小。请参阅Find out the size of a .net object中的答案。

您可以在代码中编写一个函数(改编自上面的线程)并从watch中引用它。

Public Function GetSerializedSize(myObject As Object) As Long
    Using ms As New IO.MemoryStream
        Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
        bf.Serialize(ms, myObject)
        GetSerializedSize = ms.Position
    End Using
End Function

然而,这不是精确的(我得到DatataTable值小2倍)也不方便(值必须手动刷新),但它给你一些线索。

答案 2 :(得分:0)

  1. 创建对象列表。
  2. 仅添加一个对象(对于字符串属性,添加最大字符串长度)。
  3. 在添加对象之前设置断点。
  4. 运行项目
  5. 拍摄“内存使用情况快照”(标签:诊断工具下的内存使用情况)。
  6. 获取另一个快照。

它不准确,但它是一个很好的猜测。