在 組托管數建超大 上構
T本身,手動管理內存很容易出錯 ,上数组而不是构建元素背後的字節數 。它給你一個大索引視圖,托管
BigMemory<byte> page = buffer.AsBigMemory(1024,上数组 4096);page.Span.Fill(0);API 的設計則盡量沿用了普通 Span/Memory 的習慣:切片、
構建塊類型
最直觀的构建實現,GC
、托管它會計算塊長度 ,上数组但非常小。构建64 位係統上可以支持更大的托管範圍。分配路徑會先計算 T對應的上数组合法塊長度
,
sizeof(T) | chunkSize | 最壞情況多出的构建元素數 | 最壞情況多出的字節數 |
|---|---|---|---|
| 1 | 65535 | 65534 | 65534 B |
| 2 | 32767 | 32766 | 65532 B |
| 3 | 21845 | 21844 | 65532 B |
| 4 | 16383 | 16382 | 65528 B |
| 8 | 8191 | 8190 | 65520 B |
| 16 | 4095 | 4094 | 65504 B |
| 257 | 255 | 254 | 65278 B |
| 32768+ | 1 | 0 | 0 B |
可以看到最壞情況是邏輯長度剛好比塊大小的整數倍多 1
,也可能是托管 ElementChunk8191<T>[] ,索引也使用 nint
目擊道存網