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

Zan*_*son 11 .net memory visual-studio-2010 visual-studio

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

Dib*_*Dib 6

不知道这是否会帮助其他人解决这个问题。

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

  1. 菜单
  2. 除错
  3. 视窗
  4. 显示诊断工具
  5. 请点击 Take Snapshot
  6. 等待快照创建。
  7. 点击ObjectsHeap Size列中的蓝色超链接
  8. 查看变量的包含大小。

HTH。


Iva*_*anH 1

我认为这是不可能的。请参阅托管对象的大小(相当旧,但似乎仍然有效)。

您可以在“立即”窗口中设置对象大小。请参阅我在找出 .net 对象的大小中的答案。

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

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
Run Code Online (Sandbox Code Playgroud)

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