꺼내먹는지식 준

Garbage Collector (Python ) 본문

CS/OS

Garbage Collector (Python )

알 수 없는 사용자 2022. 1. 28. 13:08

해당 글은 아래의 블로그를 적극 참고하였으므로, 가독성이 떨어지면 해당 블로그를 참고하자. 

https://medium.com/dmsfordsm/garbage-collection-in-python-777916fd3189

 

Garbage Collection in Python

Python의 메모리 관리 기법을 알아보자.

medium.com

 

*Garbage Collection (here after, GC)

: 현대적인 언어에서 필수로 존재하며, 개발자의 생산성을 향상시켜주므로 꼭 알아하는 개념 (feat. C#, JS, Python / C, C++ 도 library 존재)

GC는 메모리를 자동으로 관리해주는 과정이다. 당연히 자동으로 메모리를 관리해주니 사람이 직접 하는 것보다 최적화가 덜 되어있다. 


현대적인 언어 이전에는 메모리를 직접 관리 해줘야 했고, 두가지 어려운 점이 있었다.

 

1) 필요 없는 메모리를 비우지 않았을 때

: 메모리 사용을 마치고 비우지 않을 경우 메모리 누수가 발생하고, 장기적으로 큰 문제가 발생 가능했다. 

2) 사용중인 메모리 비우기

: 존재하지 않는 메모리에 접근하려고 하면 프로그램이 중단되거나 메모리 데이터 값이 손상 될 수 있었다. 

 

이로 인해 현대 적인 언어에서 자동 메모리 관리가 등장했고, GC 도 등장. 


동기적 코드 (Computer Science, Machine Learning 등) 은 메모리 관리를 크게 신경쓰지 않아도 되지만, 비동기적 코드(Cloud, DB, Backend, Frontend)는 메모리 관리에 노력해야 한다. 

동기, 비동기

 

동기, 비동기 처리

데이터를 처리하는 방식인 동기, 비동기 처리에 대해 많은 글이 있지만 정확하게 와닿지가 않았다. 최대한 내가 이해한 방식대로 서술해 보려고 한다. 동기 (Synchronous)는 요청과 동시에 일어난다

velog.io

 

Python의 GC 구현 

Python에서 GC가 어떻게 작동하는지 살펴보자. 

Cpython에서 메모리 관리와 Garbage Collection은 두가지 측면이 있다. 

 

1. Reference Counting 

Cpython에서의 주요 garbage collection mechanism은 reference counts 방식이다. 

'CS > OS' 카테고리의 다른 글

운영체제란?  (0) 2022.03.05
GIL, Global Interpreter Lock 간단 정리  (0) 2022.01.28
Reference Counts (Python)  (0) 2022.01.28
Comments