【发布时间】:2015-08-29 16:18:55
【问题描述】:
我正在尝试使用内存分析(第一次,所以请原谅我的无知),只是为了查看类、对象、变量、方法等消耗了多少内存。我编写了这个示例 c# 控制台程序,名为MemPlay.exe:
using System;
using System.Text;
namespace MemPlay
{
class Program
{
static void Main(string[] args)
{
SomeClass myObject = new SomeClass();
StringNineMethod();
}
private static void StringNineMethod()
{
string someString0 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string someString1 = string.Empty;
string someString2 = string.Empty;
for (int i = 0; i < 9999; i++) {
someString1 += "9";
someString2 += someString1;
}
}
}
class SomeClass
{
}
}
程序运行后,我想知道:
消耗了多少内存
- MemPlay.exe
- 程序类
- 某类
- 主要方法
- 我的对象
- StringNineMethod
- someString0
- someString1
- someString2
以及使用了多少处理器:
- MemPlay.exe
- 主要方法
- StringNineMethod
我尝试使用 VisualStudio 的“性能诊断”工具,但我只能看到整个函数(即 Main 方法、StringNineMethod 和 String.Concat 方法)使用了多少内存。
有什么方法/工具可以帮助我查看每个变量、对象、类、方法消耗多少内存的所有详细信息?提前致谢。
编辑:不,我的问题与建议的问题不重复,因为该问题试图在运行时获取对象大小,我在问如何在程序结束后获取此信息。正如 Visual Studio 的性能诊断工具所做的那样,它会在程序结束执行后提供此信息。
【问题讨论】:
-
不,无法查看每个变量、对象、类消耗多少内存的详细信息。
-
真的吗?您的意思是无法从 VisualStudio 性能诊断中获取此信息,或者根本无法从任何其他工具中获取此信息?
-
我觉得根本没办法
-
不,我的问题与建议的问题不重复,因为该问题试图在运行时获取对象大小,我在问如何在程序结束后获取此信息。就像 Visual Studio 的性能诊断工具所做的那样,它会在程序结束执行后提供此信息。
-
为什么会被标记为重复?这个问题和问题甚至与 OPs 问题无关。这太荒谬了。
标签: c# memory-management performance-testing memory-profiling