Svi*_*ish 5 c# memory memory-management
有没有办法找到特定对象使用了多少内存?例如一个List.考虑到所有因素,例如字符串实习以及编译器/运行时环境/无论做什么.
您确实必须准确定义“特定对象使用了多少内存”的含义。例如,您可能意味着“如果这个对象被垃圾收集,将释放多少内存” - 或者您可能意味着“这个对象及其涉及的所有内容占用了多少内存”。
你关于字符串实习的观点就是一个很好的例子。假设你这样做:
List<string> internedStrings = new List<string>();
List<string> nonInternedStrings = new List<string>();
for (int i=0; i < 1000; i++)
{
string tmp = new string(' ', i+1);
nonInternedStrings.Add(tmp);
tmp = tmp.Intern();
internedStrings.Add(tmp);
}
Run Code Online (Sandbox Code Playgroud)
nonInternedStrings
真的比 占用更多内存吗internedStrings
?如果internedStrings
进行垃圾收集,它不会释放那么多内存 - 但如果internedStrings
从未创建过(包括不驻留其每个元素),则永远不会需要更多内存。
如果您能更具体地说明您的意思,我们也许能为您提供帮助。但这是一个复杂的问题。
归档时间: |
|
查看次数: |
11583 次 |
最近记录: |