gpt4 book ai didi

c# - 一个对象及其依赖项使用的内存

转载 作者:行者123 更新时间:2023-11-30 16:04:58 25 4
gpt4 key购买 nike

在 C# 中,是否可以知道一个对象及其依赖项分配了多少字节?我知道我可以使用 dotMemory 来做到这一点,但是有没有办法从 GC 或其他东西从 C# 获取它?

例如,如果我有这个:

var x = new Tuple<int,int>[3] { Tuple.Create(0,0), Tuple.Create(0,0), Tuple.Create(0,0) };

我正在寻找类似这样的函数:x.GetTotalMemorySize() 返回 76 = 16 + 3 * (4 + (8 + 8)))

即:

16是数组开销使用的字节数

3是数组中元素的个数

4 是 Tuple 指针使用的字节数

8 + 8 是整数使用的字节数

最佳答案

您可以免费使用 dotMemory Unit从代码测量内存的框架

    var x = new Tuple<int,int>[3] { Tuple.Create(0,0), Tuple.Create(0,0), Tuple.Create(0,0) };
dotMemory.Check(memory =>
{
var objectSet = memory.GetObjects(where => where.Type.Is<Tuple<int, int>[]>())
.GetExclusivelyRetainedObjects();

Console.WriteLine(objectSet);
});
GC.KeepAlive(x);

输出: ObjectsCount:4;字节大小:128

更新:当然我应该选择数组类型“Tuple []”而不是“Tuple ”。更新了代码和输出

关于c# - 一个对象及其依赖项使用的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34200268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com