Tham chiếu yếu

Trong lập trình máy tính, tham chiếu yếu (tiếng Anh: weak reference) là một tham chiếu mà không bảo vệ đối tượng được tham chiếu khỏi sự thu gom bởi một bộ gom rác, không giống như tham chiếu mạnh (strong reference). Một đối tượng chỉ được tham chiếu bởi tham chiếu yếu – có nghĩa là "mọi chuỗi các tham chiếu đến đối tượng đó bao gồm ít nhất một tham chiếu yếu như là một liên kết" – được xem là có thể tiếp cận được một cách yếu, và có thể được coi là không tiếp cận được và do vậy có thể bị thu thập bất cứ lúc nào. Một số ngôn ngữ dọn rác có tính năng hoặc hỗ trợ nhiều mức tham chiếu yếu, như C#, Java, Lisp, OCaml, Perl, và Python.

Cách dùng 
Tham chiếu yếu có nhiều trường hợp sử dụng phổ biến.

Dọn rác 

Thu gom rác là cơ chế để làm sạch các đối tượng không còn được sử dụng nữa và do vậy giảm thiểu khả năng rò rỉ bộ nhớ (memory leak) và thoái hóa dữ liệu (data corruption). Có hai kiểu dọn rác chính: theo dấu (tracing) và đếm tham chiếu (reference counting). Sơ đồ đếm tham chiếu ghi lại số lượng tham chiếu đến một đối tượng nhất định và thu dọn đối tượng đó khi đếm tham chiếu trở về giá trị 0.

Các biến thể 

Vài ngôn ngữ có nhiều mức độ sức mạnh của tham chiếu yếu. Ví dụ, Java có, theo thứ tự giảm sức mạnh, tham chiếu mềm, yếu, và ma, được định nghĩa trong gói java.lang.ref.

Xem thêm 
 Tham chiếu mềm (soft reference)
 Tham chiếu ma (phantom reference)
 Tham chiếu vòng (circular reference)
 Ephemeron

Tham khảo

Liên kết ngoài

C++ 
  C++11 Standard Library: std::weak_ptr reference
 Boost 1.59 (C++ library): boost::weak_ptr reference

Java 
 Java developer article: 'Reference Objects and Garbage Collection'
 
 RCache - Java Library for weak/soft reference based cache
 Java theory and practice: Plugging memory leaks with weak references

Python 
 https://docs.python.org/2/library/weakref.html
 Fred L. Drake, Jr., PEP 205: Weak References, Python Enhancement Proposal, January 2001.

Kiểu dữ liệu
Quản lý bộ nhớ