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

조회수 2506회

메인에서 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이 되므로 메모리상에 있는 상태가 됩니다.

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)