728x90
MemoryError: object leak in infinite loop
오류는 파이썬 코드에서 무한 루프나 반복문 안에서 객체가 계속해서 생성되지만, 제대로 해제되지 않아 메모리를 누수(leak)시키는 상황에서 발생합니다. 특히 리스트, 딕셔너리, 데이터프레임 등의 대용량 객체가 누적되면 시스템 메모리를 고갈시키게 됩니다.
이 오류는 주로 while True
루프, for
루프 내에서 결과를 누적하면서도 조건 없이 계속 반복하거나, 수집된 데이터를 해제하지 않는 구조에서 발생합니다.
● 오류 발생 예시
data = []
while True:
data.append("a" * 1000000) # 메모리 누수
data
리스트에 계속해서 큰 문자열을 추가하고, 종료 조건이 없기 때문에 결국 메모리 초과로 MemoryError
가 발생합니다.
● 해결 방법
- 루프 내 객체를 누적하지 않거나, 누적 시 크기를 제한
- 필요 없는 객체는
del
후gc.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
'프로그래밍언어 > 파이썬[Error]' 카테고리의 다른 글
[파이썬][Error] 088. PermissionError - cannot write to read-only file (0) | 2025.05.31 |
---|---|
[파이썬][Error] 087. PermissionError - access denied to root-only file (0) | 2025.05.31 |
[파이썬][Error] 085. MemoryError - cannot read large file into memory (0) | 2025.05.31 |
[파이썬][Error] 084. MemoryError - cannot allocate large list (1) | 2025.05.30 |
[파이썬][Error] 083. EOFError - EOF when reading a line (0) | 2025.05.30 |