TGViewer
C# (C Sharp) programming C# (C Sharp) programming @csharp_ci · 18.1K subscribers
Post #1894 1.37K
🖥 .NET 10 научился класть объекты на стек: escape analysis в JIT

Одна из самых полезных оптимизаций в .NET 10 работает незаметно. JIT проверяет, может ли объект пережить метод, в котором его создали. Если не может, объект размещается на стеке, а не в куче. Сборщику мусора отслеживать нечего, а сам объект можно разложить на отдельные поля и оптимизировать дальше.

Раньше это работало только для простых случаев. В .NET 10 на стек попадают ещё четыре вида объектов.

Маленькие массивы фиксированного размера, причём и из значимых типов, и из ссылочных:


int[] numbers = { 1, 2, 3 }; // теперь на стеке
string[] words = { "Hello", "World!" }; // тоже на стеке


Делегаты. Если лямбда не выходит за пределы метода, объект Func больше не уходит в кучу. Замыкание пока ещё аллоцируется, но это обещают доделать.

Объекты в полях локальных структур. Если массив лежит в поле структуры, а структура не покидает метод, массив тоже размещается на стеке. В ассемблере пропадает вызов аллокатора.

Заодно в JIT добавили девиртуализацию интерфейсов массивов, поэтому foreach по IEnumerable<T> над массивом теперь инлайнится. Ещё улучшили loop inversion и раскладку кода, а на Arm64 пауз GC стало меньше на 8–20%.

Переписывать ничего не нужно: привычный код с лямбдами и маленькими массивами просто начинает аллоцировать меньше после перехода на .NET 10.

https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/runtime#escape-analysis
More from @csharp_ci
  1. Oct 3, 2026Самый неожиданный кандидат на звание самого быстрого JSON-сериализатора для .NET сейчас де…
  2. Oct 2, 2026Post #1891
  3. Sep 29, 2026🖥 C# снова показывает, что «удобный язык = медленный язык» давно не работает. Автор ttfx…
  4. Sep 29, 2026🌦️ Красивый пример того, как может выглядеть современное приложение на Aspire Команда пок…
  5. Sep 27, 2026⚡ .NET 11 ускорили почти везде - от JIT и GC до LINQ и networking Stephen Toub выпустил ог…
  6. Sep 23, 2026🐞 Когда логов недостаточно: дамп памяти из C# Баг возникает только на проде, а локально в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →