Cyclic reference
-
[Python] - Cyclic reference개발/Python 2022. 9. 19. 01:47
Python은 Garbage Collection 관리 시 Reference를 Counting하는 방식 우선시하여 메모리를 다룹니다. 이 떄 발생하는 문제점인 Cyclic reference를 다루어보겠습니다. 순환 참조 ( Cyclic reference ) 직관적이며, Object를 카운터하며 0이 되면 Object를 삭제하는 식으로 GC(reference counting)가 동작한다. 해결 할 수 없는 한가지 경우가 생기는데, 두 객체가 서로를 참조하게 되는 경우에서 하나를 삭제하더라도 나머지 Object의 Count는 1개 이기 때문에 Object는 삭제 할 수 없습니다. 예시 my_dict1 = {} my_dict2 = {} my_dict1['dict2'] = my_dict2 my_dict2['dic..
-
[Python] - Garbage Collection개발/Python 2022. 9. 19. 01:47
GB( Garbage Collect ) 현대적인 언어에서 필수적인 존재로, 메모리를 관리에 도움을 준다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C, C++과 같은 언어에서는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. GC를 왜 공부해야 하나? GC는 메모리를 자동으로 관리한다. 자동으로 메모리를 관리하여 최적화가 덜 되어있다. 인스타그램은 Python GC를 사용하지 않는다. (Instagram이 Python garbage collection 없앤 이유 참고) 기존 메모리 관리 문제점 1. 메모리가 남아있는 경우 2. 사용 중인 메모리 삭제 Python의 Garbage Collection Cpython에서의 메모리 관리 측면 Referenc..