이 기사에서는 Python 객체 파괴(가비지 수집)에 대해 알아 보겠습니다. 프로그래밍 언어 Python을 처음 접한 사람들은 Python 객체 파괴(가비지 수집)에 대해 덜 알아야 하며 이에 대해 명확하지 않습니다. python 가비지 수집에 대한 지식. 그러나 그것은 중요하지 않습니다. 다음 기사에서는 Python 객체 파괴(가비지 수집)와 Python의 가비지 수집 메커니즘에 대해 알아봅니다.
python 객체 파괴(가비지 수집)Python은 참조 카운팅이라는 간단한 기술을 사용하여 가비지를 추적하고 수집합니다.
내부적으로 Python은 사용 중인 각 개체의 참조 수를 기록합니다.
참조 카운터라고 불리는 내부 추적 변수입니다.
객체가 생성되면 참조 횟수가 생성됩니다. 객체가 더 이상 필요하지 않을 때, 즉 객체의 참조 횟수가 0이 되면 가비지 수집됩니다. 그러나 재활용은 "즉시" 이루어지지 않습니다. 인터프리터는 적절한 시간에 가비지 개체가 차지하는 메모리 공간을 재활용합니다.
a = 40 # 创建对象 <40> b = a # 增加引用, <40> 的计数 c = [b] # 增加引用. <40> 的计数 del a # 减少引用 <40> 的计数 b = 100 # 减少引用 <40> 的计数 c[0] = -1 # 减少引用 <40> 的计数
참조 횟수가 0인 객체를 대상으로 할 뿐만 아니라 순환 참조도 처리할 수 있습니다. 순환 참조는 두 개체가 서로를 참조하지만 다른 변수는 이를 참조하지 않을 때 발생합니다. 이 경우 참조 카운팅만으로는 충분하지 않습니다. Python의 가비지 수집기는 실제로 참조 카운터이자 순환 가비지 수집기입니다. 참조 계산 외에도 가비지 수집기는 대량으로 할당된 개체(및 참조 계산으로 파괴되지 않은 개체)도 살펴봅니다. 이 경우 인터프리터는 일시 중지하고 참조되지 않은 루프를 정리하려고 시도합니다.
인스턴스 분석객체가 소멸되면 소멸자 __del__, __del__이 호출됩니다. 객체가 더 이상 사용되지 않으면 __del__ 메서드가 실행됩니다.
# !/usr/bin/python # -*- coding: UTF-8 -*- class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def __del__(self): class_name = self.__class__.__name__ print class_name, "销毁" pt1 = Point() pt2 = pt1 pt3 = pt1 print id(pt1), id(pt2), id(pt3) # 打印对象的id del pt1 del pt2 del pt3
위 예제의 결과는 다음과 같습니다.
3083401324 3083401324 3083401324Point 销毁
( 참고: 일반적으로 별도의 파일에 클래스를 정의해야 합니다.)
위 내용이 이 글의 전부입니다. 이 글은 주로
파이썬 객체 파괴(가비지 컬렉션)에 대한 지식을 소개합니다. 위의 내용과 제공된 예를 이해하는 데 정보를 사용할 수 있기를 바랍니다. 이 글에서 제가 설명한 내용이 여러분에게 도움이 되고 파이썬을 더 쉽게 배울 수 있기를 바랍니다. 더 많은 관련 지식을 알고 싶으시면 PHP 중국어 홈페이지의
Python tutorial위 내용은 파이썬 객체 파괴란 무엇입니까? Python의 객체 파괴(가비지 수집) 메커니즘은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!