Skip to content

Instantly share code, notes, and snippets.

@Arsenii123
Arsenii123 / `1.sql
Created December 16, 2025 14:33
First homework in sql
USE [master]
GO
/****** Object: Database [Shop] Script Date: 14/12/2025 23:04:14 ******/
CREATE DATABASE [Shop]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'Shop', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\shop.mdf' , SIZE = 15360KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = N'Shop_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\shop.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF
USE [master]
GO
/****** Object: Database [fruit] Script Date: 11/12/2025 19:22:49 ******/
CREATE DATABASE [fruit]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'fruit', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\fruit..mdf' , SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = N'fruit_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\fruitlog.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF

📖 Что такое сборщик мусора (Garbage Collector)

1. Зачем нужен сборщик мусора

Любая программа во время работы создаёт объекты в памяти: строки, массивы, коллекции, структуры данных. Когда объект больше не используется, его память должна быть освобождена, иначе произойдёт утечка памяти. В языках вроде C или C++ программист сам отвечает за освобождение памяти (/, /). Это даёт гибкость, но часто приводит к ошибкам:

  • забыли освободить память → утечка;
  • освободили дважды → краш;
  • освободили слишком рано → обращение к невалидному указателю. Чтобы избежать этих проблем, в .NET используется автоматическое управление памятью. Сборщик мусора сам отслеживает объекты и освобождает память, когда они больше не нужны.

2. Как работает GC

@Arsenii123
Arsenii123 / Benchmark1
Created November 25, 2025 19:49
benchmark
GC.RegisterForFullGCNotification(10, 10);
while (true)
{
var status = GC.WaitForFullGCApproach();
if (status == GCNotificationStatus.Succeeded)
{
Console.WriteLine("GC is about to run");
}
}