[Python] 파이썬의 변수 저장 방식과 메모리 해제(Garbage Collector)

2024. 3. 29. 18:10· 프로그래밍/Python
목차
  1. 파이썬의 변수 저장 방식
  2. 메모리 해제(Garbage Collector)
  3. Reference Counting
  4. Generation Garbage Collection

 

파이썬의 변수 저장 방식

파이썬은 모든것이 객체로 이루어져 있는 언어이다.
메모리 할당을 받는 방식은 동적 메모리 할당이며 메모리는 파이썬 메모리 관리자가 관리해준다.

따라서, 모든 변수는 객체의 값이 아닌 주소 값을 가리키는 방식으로 할당 된다!

만일 X, Y라는 변수에 값은 값이 3을 넣는다고 가정하면 아래와 같이 3이라는 객체의 주소 값을 가리키는 것이다!

이러한 파이썬의 특징 때문에 파이썬의 연산자인 'is'를 값 비교에 사용하면 안된다!

 

[Python] is연산자와 ==연산자의 차이점

is연산자와 == 연산자의 차임점? 파이썬에서 두 값을 비교할때는 '=='연산자를 사용하며 비교를 하게된다. 이는 두개의 값이 같은지 비교를 하는 연산자이기 때문이다. is연산자 역시 두 값을 비교

slowprogramer.tistory.com

메모리 해제(Garbage Collector)

사실 파이썬은 고급 언어이기 때문에 C나 C++등 처럼 직접 메모리 할당 해제를 할 필요는 없다.
하지만 뭐든 알면 살이 되니 알아보자!

python은 Cython이라는 C 언어의 구현이 되어있고 이는 두가지 방법으로 메모리를 처리한다.

Reference Counting

Python의 모든 객체는 PyObject라는 객체를 상속 받는데 이 객체는 본인이 얼마나 참조되었는지 기억을 하고 있다.
따라서, 본인이 참조되고 있지 않다(나를 가리키는 변수가 0개이다)라고 하면 메모리를 해제하게 된다.

Generation Garbage Collection

해당 방식에서는 2가지의 개념을 알아야 한다.

Generation

파이썬의 Garbage Collection은 모든 객체를 추적을 하게 되는데 하나의 세대(Generation)에서 해제가 안되면(살아남으면) 다음 세대로 보낸다.

Threshold

파이썬은 각 세대에 임계값(Threshold)를 가지고 있고 임계값이 넘으면 Garbage Collection(메모리 해제)를 진행한다.

위의 두 특성을 이용해 어떠한 객체가 2번 할당후 1번 해제된뒤 삭제되는 경우 Reference Couning 방식으로 해결 못하는 문제(Refernce Cycle)을 해결할 수 있다.

해제는 만든지 얼마 안된 객체부터 일어나는데 이는 "만든지 얼마 안된 객체가 오래된 객체보다 해제될 가능성이 높다"라는 'generational hypothesis'에 의거해서 실행된다

 

'프로그래밍 > Python' 카테고리의 다른 글

[Python - 3 ] 입력과 출력  (0) 2024.04.01
[Python - 2 ] 변수, 자료형, 메소드 그리고 비교 및 논리 연산자  (0) 2024.04.01
[Python - 01 ] 기본 문법  (0) 2024.04.01
[Python] is연산자와 ==연산자의 차이점  (0) 2024.03.28
[Python] 파이썬의 연산자  (0) 2024.03.28
  1. 파이썬의 변수 저장 방식
  2. 메모리 해제(Garbage Collector)
  3. Reference Counting
  4. Generation Garbage Collection
'프로그래밍/Python' 카테고리의 다른 글
  • [Python - 2 ] 변수, 자료형, 메소드 그리고 비교 및 논리 연산자
  • [Python - 01 ] 기본 문법
  • [Python] is연산자와 ==연산자의 차이점
  • [Python] 파이썬의 연산자
나무늘보Programmer
나무늘보Programmer
게으른 개발자가 공부하고 성장하는 과정을 기록하는 블로그 입니다.
나무늘보Programmer
게으른 개발자의 개발일기
나무늘보Programmer
전체
오늘
어제
  • 분류 전체보기 (71)
    • 수학 (0)
      • 확률과 통계 (0)
    • Computer Science(CS) (8)
      • 혼자 공부하는 컴퓨터 구조 + 운영체제 (1)
      • Network (0)
    • 프로그래밍 (57)
      • Python (8)
      • Java (1)
      • C++ (0)
      • HTML (13)
      • CSS (13)
      • JavaScript (19)
      • DB (1)
      • Spring (1)
    • 머신러닝&딥러닝 (0)
      • Computer Science(CS) (0)
      • 인공지능 (0)
      • Paper Review (0)
    • BootCamp(OZ Coding School) (3)
    • TroubleShooting (1)
    • SandBox (0)
    • Project (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
나무늘보Programmer
[Python] 파이썬의 변수 저장 방식과 메모리 해제(Garbage Collector)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.