본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 086. MemoryError - object leak in infinite loop

by about_IT 2025. 5. 31.
728x90

MemoryError: object leak in infinite loop 오류는 파이썬 코드에서 무한 루프나 반복문 안에서 객체가 계속해서 생성되지만, 제대로 해제되지 않아 메모리를 누수(leak)시키는 상황에서 발생합니다. 특히 리스트, 딕셔너리, 데이터프레임 등의 대용량 객체가 누적되면 시스템 메모리를 고갈시키게 됩니다.

이 오류는 주로 while True 루프, for 루프 내에서 결과를 누적하면서도 조건 없이 계속 반복하거나, 수집된 데이터를 해제하지 않는 구조에서 발생합니다.

● 오류 발생 예시

data = []
while True:
    data.append("a" * 1000000)  # 메모리 누수

data 리스트에 계속해서 큰 문자열을 추가하고, 종료 조건이 없기 때문에 결국 메모리 초과로 MemoryError가 발생합니다.

● 해결 방법

  • 루프 내 객체를 누적하지 않거나, 누적 시 크기를 제한
  • 필요 없는 객체는 delgc.collect()로 수동 해제
  • 로깅 또는 결과 저장은 디스크로 분산
  • 루프에 종료 조건 추가

● 예시 코드 (누수 방지)

import gc
data = []
for i in range(1000):
    data.append("a" * 1000000)
    if len(data) > 100:
        del data[:50]
        gc.collect()

● 자주 하는 실수

  • 무한 루프 내에서 데이터 누적하면서 해제 코드 생략
  • 불필요한 변수 재사용 없이 계속 새로운 객체 생성
  • 반복 처리 중 결과를 모두 메모리에 저장하려고 시도

● 결론

MemoryError - object leak in infinite loop는 종료되지 않는 루프에서 메모리 누수가 계속 발생할 때 나타나는 오류입니다. 객체의 생성과 해제를 명확히 하고, 무한 루프 구조에서 메모리 관리를 철저히 해야 합니다.

728x90