Jon*_*ood 6 .net c# arrays memory-management
我有以下数组:
byte[][] A = new byte[256][];
Run Code Online (Sandbox Code Playgroud)
此数组的每个元素都引用另一个数组.
A[n] = new byte[256];
Run Code Online (Sandbox Code Playgroud)
但是,大多数元素引用相同的数组.实际上,数组A仅引用两个或三个唯一数组.
有没有一种简单的方法来确定整个事物使用多少内存?
如果您的问题是找出唯一的一维数组的数量,您可以这样做:
A.Distinct().Count()
Run Code Online (Sandbox Code Playgroud)
这应该是因为默认情况下数组的相等性在引用相等性上起作用.
但也许你正在寻找:
A.Distinct().Sum(oneDimArray => oneDimArray.Length) * sizeof(byte)
Run Code Online (Sandbox Code Playgroud)
当然,"变量使用的字节数"是一个有点不精确的术语.特别是,上面的表达式没有考虑变量的存储,A锯齿状数组中的引用,开销,对齐等.
编辑:正如Rob指出的那样,null如果锯齿状数组可以包含引用,则可能需要过滤引用.
您可以使用(unsafecontext)估计在锯齿状数组中存储引用的成本:
A.Length * sizeof(IntPtr)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |