메모리 할당과 해제는 성능에 큰 영향을 미칩니다. 특히 배열을 자주 생성하고 버리는 코드에서는 더욱 그렇습니다. C#의 System.Buffers.ArrayPool<T>를 사용하면 배열을 재활용해 메모리 할당 횟수를 줄일 수 있습니다.
1. ArrayPool<T> 개요
ArrayPool<T>는 배열을 풀에서 빌리고 반납하는 방식으로 동작합니다. 필요할 때 배열을 새로 생성하지 않고, 이미 할당된 배열을 재사용합니다.
2. 기본 사용법
// 배열 풀에서 배열 빌리기
var pool = System.Buffers.ArrayPool<byte>.Shared;
byte[] buffer = pool.Rent(1024); // 최소 1024 크기의 배열 빌림
// 배열 사용
// ...
// 배열 반납
pool.Return(buffer);
3. 장점과 주의점
반복적으로 배열을 할당하지 않아 GC 부담이 줄고, 성능이 향상됩니다. 다만 배열을 사용 후 반드시 Return()으로 반납해야 하며, 재사용 후 이전 데이터를 초기화해야 할 경우 삭제 옵션을 사용하거나 별도로 초기화해야 합니다.
4. 요약
ArrayPool<T>를 통해 배열 할당 비용을 줄이고 메모리를 효율적으로 관리할 수 있습니다. 고성능이 요구되는 네트워크, 파일 I/O 등에 활용하면 좋은 결과를 얻을 수 있습니다.
'C#' 카테고리의 다른 글
| C# Stopwatch 대신 BenchmarkTimer 만들기 (0) | 2026.05.27 |
|---|---|
| C# ValueTask와 Task 성능 비교 및 활용 전략 (0) | 2026.05.27 |
| C# 비동기 스트림(IAsyncEnumerable) 처리와 응용 (0) | 2026.05.26 |
| C# 고급 이벤트 패턴: EventArgs 상속과 데이터 전달 (0) | 2026.05.26 |
| C# ThreadLocal<T>로 스레드별 데이터 관리 (0) | 2026.05.26 |