在C#中,是否可能知道一个对象及其依赖项分配了多少字节?我知道我可以使用dotMemory来做到这一点,但是从GC还是有某种方法可以从C#中获得它?例如,如果我有这个:var x = new Tupleint,int[3] { Tuple.Create(0,0)...
![](https://oss.womengda.net/imgfile/2310/1ER2J5021R0-52H6.jpg)
在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是元组指针使用的字节
8 8是int使用的字节
解决方法:
您可以使用免费的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; SizeInBytes:128
更新:当然,我应该选择数组类型“ Tuple< int,int> []”,而不是“ Tuple< int,int>”.更新了代码和输出
沃梦达教程
本文标题为:c#-一个对象使用的内存及其依赖项
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
猜你喜欢
- C#/VB.NET实现在 Word 中插入水印 2023-06-27
- C#中RSA加密与解密的实例详解 2023-01-27
- C#实现一阶卡尔曼滤波算法的示例代码 2023-04-14
- 如何使用c#sql server向现有表添加新行 2023-11-15
- ZooKeeper 实现分布式锁的方法示例 2023-01-22
- C#实现飞行棋游戏 2023-04-22
- C#实现计算器窗体程序 2023-05-16
- C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter 2023-06-14
- c#获取图片正确格式的方法 2023-03-04
- C#多线程用法详解 2023-05-11