반응형

Backend 언어/Python Django 2

GC, 그대로 두면 아니되는 이유

- 전 포스팅, GC에 대한 나의 의식 흐름은 아래와 같이 바뀜 ~ 글을 쓰기 전 : 좋은거 아닌가 --> 글을 쓰면서 : 마냥 좋은건 아니구나 --> 글을 마무리하면서 : 잘 써야하는거구나 그래서 이 의식을 놓치기 전에 인스타그램을 예시로 후딱 정리하게씀 (인스타그램이 python garbage collection을 없앤 이유) - GC를 없애기 전의 인스타그램 상황 ~ 웹서버는 django의 multi-process mode로 동작하고 WAS는 pre_fork모드를 이용하여 uWSGI 서버를 이용한다. ~ 인스타그램은 내부적으로 master process spawning, 프로세스가 생성되고 나서 공유 메모리는 2/3에 불과했음 - 공유 메모리? : Linux kernel에서는 메모리 관리를 위하여 ..

메모리 관리 기법 GC(Garbage collection, 쓰레기 수집)

- 파이썬은 레퍼런스 카운팅 방식으로 가비지 컬렉션을 수행해 메모리를 관리한다는 것을 보고 정리해본다. - GC는 메모리 관리 기법 중의 하나로 동적으로 할당된 메모리 영역 가운데 더이상 사용할 수 없게 된 영역, 즉 어떠한 변수도 가리키지 않게 된 영역을 탐지하여 해제하는 역할을 한다. - GC의 장점 1) 유효하지 않은 포인터 접근 방지 : 이미 해제가 된 메모리 영역에 접근하는것을 방지한다. 2) 이중 해제 방지 : 이미 해제된 메모리를 다시 해제하는 버그 방지 3) 메모리 누수 방지 : 더 이상 필요하지 않은 메모리가 해제되지 않고 계속 메모리에 남아있는 버그 방지 (이 현상이 심해지면 메모리 고갈로 프로그램 강제 종료 가능) - GC 단점 1) 어떤 메모리를 해제하고 언제 해제할지 결정해야 하고..

반응형