有没有办法找出一个对象实例占用了多少内存?
例如,如果我有以下对象的实例:
TestClass tc = new TestClass();
有没有一种方法可以找出实例tc
占用了多少内存?
问这个问题的原因是虽然C#有内置的内存管理,但我经常遇到未清除对象实例(例如跟踪某些内容的列表)的问题。
有一些相当不错的内存分析工具(例如ANTS Profiler),但在多线程环境中,即使使用这些工具,也很难弄清楚哪里属于哪里。
有没有办法找出一个对象实例占用了多少内存?
例如,如果我有以下对象的实例:
TestClass tc = new TestClass();
有没有一种方法可以找出实例tc
占用了多少内存?
问这个问题的原因是虽然C#有内置的内存管理,但我经常遇到未清除对象实例(例如跟踪某些内容的列表)的问题。
有一些相当不错的内存分析工具(例如ANTS Profiler),但在多线程环境中,即使使用这些工具,也很难弄清楚哪里属于哪里。
CLR Profiler 是由微软提供的免费工具,非常擅长这种类型的工作。
可以在此处下载整个分析器的介绍 here。同时,Patterns & Practices 团队曾经详细介绍了如何使用该分析器put something。
它能够相当合理地展示出不同线程和这些线程中创建的对象。
希望这能为您提供一些帮助。祝您分析愉快!