在C#中,是否可能知道一个对象及其依赖项分配了多少字节?我知道我可以使用dotMemory来做到这一点,但是从GC还是有某种方法可以从C#中获得它?例如,如果我有这个:var x = new Tupleint,int[3] { Tuple.Create(0,0)...

在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#-一个对象使用的内存及其依赖项


基础教程推荐
猜你喜欢
- C# 调用exe传参,并获取打印值的实例 2023-04-14
- C#利用缓存分块读写大文件 2023-01-22
- C#实现从位图到布隆过滤器的方法 2023-06-21
- Unity实现攻击范围检测并绘制检测区域 2023-02-16
- C#使用GUID(全局统一标识符) 2023-05-31
- Unity实现高效的音效管理类的示例代码 2023-07-18
- C#中一个高性能异步socket封装库的实现思路分享 2022-11-27
- C# API中模型与它们的接口设计详解 2022-12-26
- c# excel如何导入到sqlserver数据库 2023-11-11
- c# winform treelistview的使用(treegridview)实例详解 2022-11-30