파이썬 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문의 첫 번째와 마지막의 실행 여건(메모리 공간)이 같고 싶습니다.

1답변

  • 좋아요

    1

    싫어요
    채택취소하기

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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.