Збирач сміття (Garbage Collector, GC) є ключовим компонентом платформи .NET, що забезпечує автоматичне керування пам'яттю та запобігає витокам. У версії .NET 9, випущеній у листопаді 2024 року, відбулися значні покращення GC, спрямовані на підвищення ефективності пам'яті, зниження латентності та адаптацію до динамічних навантажень. Основними інноваціями є активація за замовчуванням механізму DATAS (Dynamic Adaptation to Application Sizes), адаптивний Server GC та оптимізації, пов'язані з JIT-компіляцією. Ця оглядова стаття аналізує ці зміни, їх механізми, вплив на продуктивність та рекомендації щодо використання. На основі офіційної документації Microsoft та бенчмарків, демонструється зниження споживання пам'яті на 93% та зростання throughput на 15% у типових сценаріях. Стаття корисна для розробників, які працюють з високонавантаженими додатками, особливо в хмарних та контейнеризованих середовища
| #include <iostream> | |
| using namespace std; | |
| //1 | |
| int main() | |
| { | |
| cout << "Number_1\n\n\n"; | |
| cout << "To be\n\n"; | |
| cout << "\tor not\n\n"; | |
| cout << "\t\tto be\n\n\n\n"; |
| # 1 | |
| # 1 | |
| # add = lambda x, y: x+y | |
| # result = add(7,5) | |
| # print(result) | |
| # 2 | |
| # parity_check = lambda x: "Парне" if x % 2 == 0 else "Непарне" | |
| # print(parity_check(4)) |
| 1 | |
| def main(): | |
| try: | |
| name = input("Введіть ваше ім'я: ") | |
| age = int(input("Введіть ваш вік: ")) | |
| if age < 0 or age > 130: | |
| raise ValueError("Некоректний вік! Вік має бути в діапазоні від 0 до 130.") | |
| print(f"Привіт, {name}! Твій вік — {age}") |
| import random | |
| def drawboard(board): | |
| print(" | |") | |
| print(" "+board[7]+" | "+board[8]+" | "+board[9]) | |
| print(" | |") | |
| print("---+---+---") | |
| print(" | |") | |
| print(" "+board[4]+" | "+board[5]+" | "+board[6]) | |
| print(" | |") |
| # Нові можливості збирача сміття в .NET 9: Огляд адаптивних механізмів та оптимізацій продуктивності | |
| ## Анотація | |
| Збирач сміття (Garbage Collector, GC) є ключовим компонентом платформи .NET, що забезпечує автоматичне керування пам'яттю та запобігає витокам. У версії .NET 9, випущеній у листопаді 2024 року, відбулися значні покращення GC, спрямовані на підвищення ефективності пам'яті, зниження латентності та адаптацію до динамічних навантажень. Основними інноваціями є активація за замовчуванням механізму DATAS (Dynamic Adaptation to Application Sizes), адаптивний Server GC та оптимізації, пов'язані з JIT-компіляцією. Ця оглядова стаття аналізує ці зміни, їх механізми, вплив на продуктивність та рекомендації щодо використання. На основі офіційної документації Microsoft та бенчмарків, демонструється зниження споживання пам'яті на 93% та зростання throughput на 15% у типових сценаріях. Стаття корисна для розробників, які працюють з високонавантаженими додатками, особливо в хмарних та контейнеризованих середовища |
Збирач сміття (Garbage Collector, GC) у .NET продовжує еволюціонувати, забезпечуючи ефективне керування пам'яттю в умовах сучасних хмарних і контейнеризованих середовищ. У .NET 10, випущеній у листопаді 2025 року, ключовими інноваціями стали розширені налаштування DATAS (Dynamic Adaptation to Application Sizes) для Server GC, оптимізації ескейп-аналізу для стекових алокацій малих об'єктів, елімінація write-barrier'ів та покращення для Arm64. Ці зміни зменшують тиск на GC, знижуючи латентність на 66–91%, елімінуючи алокації в 100% випадків для короткоживучих об'єктів та стабілізуючи паузи під навантаженням. На основі документації Microsoft та бенчмарків, демонструється скорочення memory footprint на 70–90% у мікросервісах та зростання throughput на 10–18%. Стаття корисна для розробників високонавантажених систем, особливо в Kubernetes та Azure, з рекомендаціями щодо тюнінгу.
Ключові слова: .NET
| USE [master] | |
| GO | |
| /****** Object: Database [CarStore] Script Date: 11.12.2025 19:22:43 ******/ | |
| CREATE DATABASE [CarStore] | |
| CONTAINMENT = NONE | |
| ON PRIMARY | |
| ( NAME = N'CarStore', FILENAME = N'C:\My SQL\Car\car.mdf' , SIZE = 15360KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) | |
| LOG ON | |
| ( NAME = N'CarStore_log', FILENAME = N'C:\My SQL\Car\carlog.ldf' , SIZE = 5120KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) | |
| WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF |
| USE [master] | |
| GO | |
| /****** Object: Database [Product] Script Date: 11.12.2025 21:04:59 ******/ | |
| CREATE DATABASE [Product] | |
| CONTAINMENT = NONE | |
| ON PRIMARY | |
| ( NAME = N'Product', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\Product.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) | |
| LOG ON | |
| ( NAME = N'Product_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\Product_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) | |
| WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF |
| USE [master] | |
| GO | |
| /****** Object: Database [Product] Script Date: 12.12.2025 13:37:32 ******/ | |
| CREATE DATABASE [Product] | |
| CONTAINMENT = NONE | |
| ON PRIMARY | |
| ( NAME = N'Product', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\Product.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) | |
| LOG ON | |
| ( NAME = N'Product_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\Product_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) | |
| WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF |