파이썬 for 안에서 객체 생성시 메모리에 객체가 계속 쌓일까요?


메인에서 for문을 돌립니다.

for문 안의 내용물은 클래스 객체A를 생성하고,

for i in range(n):
    obj_A = make_obj_A()

생성된 객체 A는 또다른 클래스 객체B를 무수히 많이 생성합니다.

class make_obj():
    def __init__(self):
        for i in range(n):
            obj_B = make_obj_B()

이런 경우에 이 메인 프로세스는 for가 한 번 끝나더라도,

무수히 많이 생성된 객체B들을 계속 메모리에 저장하고 있을까요?

제가 원하는건 for문의 첫 번째와 마지막의 실행 여건(메모리 공간)이 같고 싶습니다.

  • 2017년 10월 06일에 작성됨

조회수 96


1 답변


좋아요
1
싫어요
채택취소하기

우선 파이썬은 가비지컬렉션(레퍼런스 카운팅)을 사용하여 객체를 정리합니다.

당연히 반복에 의해 생성할시 레퍼런스 카운트가 최소 1이 되므로 메모리상에 있는 상태가 됩니다.

"제가 원하는건 for문의 첫 번째와 마지막의 실행 여건(메모리 공간)이 같고 싶습니다" <- 이럴수가 없습니다. 계속해서 객체를 생성한 상태이고 해당 객체를 사용할 계획이라면 메모리에 계속 존재해야 합니다. 만약 필요가 없다면 객체 생성시 list등의 컬렉션에 넣고 명시적으로 삭제해주면 됩니다.

  • 2017년 10월 06일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close