나는 내 기억력을 믿지 않는다

가비지 컬렉터를 회피하기 위한 몇 가지 전략

박도치 2024. 1. 24. 23:21
  1. 객체 풀 사용: 객체 풀은 미리 할당된 메모리 블록을 사용하여 객체를 관리하는 기술입니다. 객체를 필요할 때마다 생성하는 대신, 객체를 재사용하여 메모리 할당 및 해제 오버헤드를 줄일 수 있습니다.
  2. 참조 관리: 가비지 컬렉터는 더 이상 참조되지 않는 객체를 파악하여 제거합니다. 명시적인 참조 관리를 통해 불필요한 객체 참조를 줄이고, 불필요한 순환 참조를 피함으로써 가비지 컬렉션을 최소화할 수 있습니다.
  3. 최적화된 데이터 구조 사용: 메모리를 효율적으로 사용하도록 데이터 구조를 최적화하여 객체가 생성되고 소멸되는 횟수를 줄입니다.
  4. 매니언 메모리 관리: 일부 언어나 런타임 환경에서는 개발자가 메모리 할당 및 해제를 직접 관리할 수 있습니다. 그러나 이는 신중한 사용이 필요하며 메모리 누수 등을 방지하기 위해 주의가 필요합니다.
  5. 객체 재활용: 더 이상 필요하지 않은 객체를 완전히 파괴하는 대신, 재사용 가능한 객체로 만들어 사용하는 것도 가비지 컬렉션을 피하는 한 방법입니다.
  6. 소규모 가비지 컬렉션 활성화: 일부 런타임 환경에서는 작은 범위의 가비지 컬렉션을 수동으로 활성화하여 특정 지점에서만 가비지 컬렉션을 수행할 수 있습니다.
  7. 메모리 누수 감지 도구 사용: 메모리 누수를 방지하기 위해 감지 도구를 사용하여 코드에서 메모리 누수를 식별하고 수정할 수 있습니다.
  8. Finalizer 사용 최소화: 파이널라이저를 가진 객체는 가비지 컬렉션 과정에서 추가적인 부담을 주므로 가능하면 파이널라이저의 사용을 피하거나 최소화 해야합니다.
  9. IDisposable 패턴 구현: 필요한 경우 IDisposable 인터페이스를 구현하여 여러 관리되지 않는 자원을 적절히 해체해야 합니다.