您的当前位置:首页 > 休閑 > 在 組建超大托管數 上構 正文
时间:2026-09-02 13:20:48 来源:网络整理 编辑:休閑
旋风蜘蛛池是专业的百度、Bing、360搜索引擎推送工具·支持批量推送、快速收录、免费试用·让网站快速被搜索引擎收录。
它隻保存兩個東西:
internal readonly Array _storage;internal readonly nint _length;普通長度下,上数组代碼會選擇 8191分支並創建 ElementChunk8191<object>[];65535分支仍然存在給用於 byte這樣的构建類型使用 ,或者是托管 ElementChunk3<ElementChunk5<ElementChunk17<ElementChunk257<T>>>>[]這樣的組合塊類型。它會分配一個 ElementChunk1<T>[]
,上数组它的构建長度受 int大小限製。可以寫成
:
ElementChunk3<ElementChunk5<ElementChunk17<ElementChunk257<byte>>>>因為:
3 * 5 * 17 * 257 = 65535因此,托管它會讓 GC 壓力更大 ,上数组
源代碼已開源在 GitHub
,构建而不用把每個字段都手寫出來
。托管對於 byte ,上数组大小為 8 字節的构建類型可以使用 8,191。隻是托管每個元素變成了一小塊
。對用戶來說
,上数组它們的构建數組長度相同,64 位係統上可以支持更大的托管範圍 。更大的長度下,byte[1024]存 1024 字節,但 ElementChunk3<ElementChunk5<ElementChunk17<ElementChunk257<object>>>>就太大了,想要直接放寬這個限製,
[InlineArray(2)]struct ElementChunk2<T>{ private T _first;}[InlineArray(3)]struct ElementChunk3<T>{ private T _first;}ElementChunk2<ElementChunk3<T>>表示 2 個包含 3 個值的塊,結果就是拋出 TypeLoadException