Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Garbage Collection trong Python hoạt động như thế nào?

Python tự động xóa object không cần thiết (built-in type hoặc class instance) để giải phóng memory. Quá trình Python định kỳ giải phóng và thu hồi block memory không còn dùng gọi là Garbage Collection.

Garbage collector chạy khi chương trình thực thi, kích hoạt khi reference count của object về 0. Reference count thay đổi khi số alias trỏ đến object thay đổi.

  • Tăng: gán tên mới, đặt vào container (list, tuple, dict)
  • Giảm: del, gán lại reference, reference ra khỏi scope

Ví dụ reference count

a = 40      # Tạo object <40>
b = a       # Tăng ref count của <40>
c = [b]     # Tăng ref count của <40>
del a       # Giảm ref count
b = 100     # Giảm ref count
c[0] = -1   # Giảm ref count → object <40> bị collect

Class có thể implement __del__() (destructor) - gọi khi instance sắp bị destroy. Dùng để dọn dẹp non-memory resource.

Ví dụ __del__

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, "destroyed")

pt1 = Point()
pt2 = pt1
pt3 = pt1
print(id(pt1), id(pt2), id(pt3))  # Cùng id
del pt1
del pt2
del pt3  # "Point destroyed" in ra lúc này

Kết quả

3083401324 3083401324 3083401324
Point destroyed