본문 바로가기
728x90

약한참조2

[PYTHON] weakref 모듈 사용 방법과 순환 참조 2가지 문제 해결 및 성능 차이 분석 파이썬은 강력한 가비지 컬렉터(Garbage Collector)를 가진 언어지만, 개발자가 객체 간의 관계를 잘못 설계하면 메모리 누수의 늪에 빠지기 쉽습니다. 특히 대규모 캐시 시스템이나 복잡한 객체 그래프를 다룰 때 '강한 참조(Strong Reference)'는 객체의 생명 주기를 불필요하게 연장합니다. 이때 구원투수로 등장하는 것이 바로 weakref 모듈입니다. 본 아티클에서는 파이썬의 약한 참조가 무엇인지, 그리고 실무에서 메모리 효율을 극대화하기 위해 이를 어떻게 활용하는지 깊이 있게 다룹니다.1. 강한 참조와 약한 참조의 결정적 차이파이썬의 기본 할당 방식은 '강한 참조'입니다. 어떤 객체를 가리키는 강한 참조가 하나라도 남아있다면, 가비지 컬렉터는 해당 객체를 메모리에서 제거하지 않습니다.. 2026. 3. 16.
[PYTHON] Reference Counting과 순환 참조(Cyclic Reference) 해결 방식 2가지 핵심 알고리즘 파이썬 메모리 관리의 심장부에는 참조 카운팅(Reference Counting)이라는 메커니즘이 자리 잡고 있습니다. 이는 객체가 얼마나 많이 사용되고 있는지를 숫자로 기록하여, 더 이상 필요하지 않을 때(카운트가 0이 될 때) 즉시 메모리에서 해제하는 효율적인 시스템입니다. 하지만 이 완벽해 보이는 시스템에도 치명적인 약점이 있으니, 바로 순환 참조(Cyclic Reference) 문제입니다. 본 포스팅에서는 참조 카운팅의 작동 원리와 이를 무력화하는 순환 참조 현상을 분석하고, 파이썬이 이를 어떻게 기술적으로 해결하는지 그 방법과 성능 차이를 심층적으로 다룹니다.1. 참조 카운팅(Reference Counting)의 동작 원리파이썬의 모든 객체는 C 구조체인 PyObject를 기반으로 하며, 여기에는.. 2026. 3. 15.
728x90