Nhược dẫn dụng
TạiKế toán cơ trình tự thiết kếTrung,Nhược dẫn dụngDữCường dẫn dụngTương đối, thị chỉ bất năng xác bảo kỳ dẫn dụng đíchĐối tượngBất hội bịLạp ngập hồi thu khíHồi thu đích dẫn dụng. Nhất cá đối tượng nhược chỉ bị nhược dẫn dụng sở dẫn dụng, tắc bị nhận vi thịBất khả phóng vấn( hoặc nhược khả phóng vấn ) đích, tịnh nhân thử khả năng tại nhậm hà thời khắc bị hồi thu. Nhất ta phối hữu lạp ngập hồi thu cơ chế đích ngữ ngôn, nhưJava,C#,Python,Perl,LispĐẳng đô tại bất đồng trình độ thượng chi trì nhược dẫn dụng.
Lạp ngập hồi thu
[Biên tập]Lạp ngập hồi thu dụng lai thanh lý bất hội tái sử dụng đích đối tượng, tòng nhi hàng đêNội tồn tiết lộHòa sổ cư tổn phôi đích khả năng tính. Lạp ngập hồi thu chủ yếu hữu lưỡng chủng loại hình:Truy tungHòaDẫn dụng kế sổ.Dẫn dụng kế sổ hội ký lục cấp định đối tượng đích dẫn dụng cá sổ, tịnh tại dẫn dụng cá sổ vi linh thời thu tập cai đối tượng. Do vu nhất thứ cận năng hữu nhất cá đối tượng bị hồi thu, dẫn dụng kế sổ vô pháp hồi thu tuần hoàn dẫn dụng đích đối tượng. Nhất tổ tương hỗ dẫn dụng đích đối tượng nhược một hữu bị kỳ tha đối tượng trực tiếp dẫn dụng, tịnh thả bất khả phóng vấn, tắc hội vĩnh cửu tồn hoạt hạ lai. Nhất cá ứng dụng trình tự như quả trì tục địa sản sinh giá chủng bất khả phóng vấn đích đối tượng quần tổ, tựu hội phát sinh nội tồn tiết lậu. Tại đối tượng quần tổ nội bộ sử dụng nhược dẫn dụng ( tức bất hội tại dẫn dụng kế sổ trung bị kế sổ đích dẫn dụng ) hữu thời năng tị miễn xuất hiện dẫn dụng hoàn, nhân thử nhược dẫn dụng khả dụng vu giải quyết tuần hoàn dẫn dụng đích vấn đề. Như Apple đíchCocoaKhuông giá tựu thôi tiến sử dụng giá chủng phương pháp, cụ thể vi, tại phụ đối tử dẫn dụng thời sử dụng cường dẫn dụng, tử đối phụ dẫn dụng thời sử dụng nhược dẫn dụng, tòng nhi tị miễn liễu tuần hoàn dẫn dụng.[1](Hiệt diện tồn đương bị phân,Tồn vuHỗ liên võng đương án quán)
Trình tự đối nhất ta đối tượng chỉ tiến hành nhược dẫn dụng, thông quá thử pháp khả dĩ chỉ minh na ta đối tượng thị bất trọng yếu đích, nhân thử nhược dẫn dụng dã dụng vu tẫn lượng giảm thiếu nội tồn trung bất tất yếu đích đối tượng tồn tại đích sổ lượng.
Biến chủng
[Biên tập]Hữu ta ngữ ngôn bao hàm đa chủng cường độ đích nhược dẫn dụng. Lệ nhưJava,Tại java.lang.ref[1][2]Bao trung định nghĩa liễuNhuyễn dẫn dụng,Nhược dẫn dụng hòaHư dẫn dụng,Dẫn dụng cường độ y thứ đệ giảm. Mỗi chủng dẫn dụng đô hữu tương đối ứng đíchKhả phóng vấn tínhKhái niệm. Lạp ngập hồi thu khí ( GC ) thông quá phán đoạn đối tượng đích khả phóng vấn tính loại hình lai xác định hà thời hồi thu cai đối tượng. Đương nhất cá đối tượng thị nhuyễn khả phóng vấn đích, lạp ngập hồi thu khí tựu khả dĩ an toàn hồi thu giá cá đối tượng, đãn như quả lạp ngập hồi thu khí nhận vi JVM hoàn năng không xuất khả dụng nội tồn ( bỉ như JVM hoàn hữu đại lượng vị sử dụng đích đôi không gian ), tắc hữu khả năng bất hội lập khắc hồi thu nhuyễn khả phóng vấn đích đối tượng. Đãn đối vu nhược khả phóng vấn đích đối tượng, nhất đán bị lạp ngập hồi thu khí chú ý đáo, tựu hội bị hồi thu. Hòa kỳ tha dẫn dụng chủng loại bất đồng, hư dẫn dụng vô pháp cân tung. Đãn lánh nhất phương diện, hư dẫn dụng đề cung liễu nhất chủng cơ chế, đương nhất cá đối tượng bị hồi thu thời trình tự khả dĩ đắc đáo thông tri ( thật hiện vu ReferenceQueues[3]). Nhất ta vị phối hữu lạp ngập hồi thu cơ chế đích ngữ ngôn, bỉ nhưC++,Dã đề cung cường / nhược dẫn dụng đích công năng, dĩ tác vi đối lạp ngập hồi thu khố đích chi trì. Tại C++ trung, phổ thông chỉ châm khả khán tố nhược dẫn dụng,Trí năng chỉ châmKhả khán tố cường dẫn dụng, tẫn quản chỉ châm bất năng toán "Chân chính" đích nhược dẫn dụng, nhân vi nhược dẫn dụng ứng cai năng tri đạo hà thời đối tượng biến thành bất khả phóng vấn đích liễu.
Kỳ lệ
[Biên tập]Nhược dẫn dụng khả dụng vu tại ứng dụng trình tự trung duy hộ nhất cá đương tiền bị dẫn dụng đích đối tượng đích liệt biểu. Cai liệt biểu tất tu nhược dẫn dụng đáo na ta đối tượng, phủ tắc nhất đán đối tượng bị thiêm gia đáo liệt biểu trung, do vu tha môn bị liệt biểu dẫn dụng liễu, tại trình tự vận hành kỳ gian tương vĩnh viễn bất hội bị hồi thu.
Java
[Biên tập]Java thị đệ nhất cá tươngCường dẫn dụngTác vi mặc nhận đối tượng dẫn dụng đích chủ lưu ngữ ngôn. Chi tiền đích ( ANSI ) C ngữ ngôn chỉ chi trì nhược dẫn dụng. Nhi hậu David Hostettler Wain hòa Scott Alexander Nesmith chú ý đáo sự kiện thụ vô pháp chính thường thích phóng đích vấn đề, kết quả tại đại ước 1998 niên, thôi xuất liễu phân biệt hội bị kế sổ hòa bất hội bị kế sổ đích cường, nhược dẫn dụng.
Như quả sang kiến liễu nhất cá nhược dẫn dụng, nhiên hậu tại đại mã đích kỳ tha địa phương dụngget()
Hoạch đắc chân thật đối tượng, do vu nhược dẫn dụng vô pháp trở chỉ lạp ngập hồi thu,get()
Tùy thời hữu khả năng khai thủy phản hồinull
( giả như đối tượng một hữu bị cường dẫn dụng ).[4]
importjava.lang.ref.WeakReference;
publicclassReferenceTest{
publicstaticvoidmain(String[]args)throwsInterruptedException{
WeakReferencer=newWeakReference(newString("I'm here"));
WeakReferencesr=newWeakReference("I'm here");
System.out.println("before gc: r="+r.get()+",static="+sr.get());
System.gc();
Thread.sleep(100);
// chỉ hữu r.get() biến vi null
System.out.println("after gc: r="+r.get()+",static="+sr.get());
}
}
Nhược dẫn dụng hoàn khả dĩ dụng lai thật hiệnHoãn tồn.Lệ như dụng nhượcCáp hi biểu,Tức thông quá nhược dẫn dụng lai hoãn tồn các chủng dẫn dụng đối tượng đích cáp hi biểu. Đương lạp ngập hồi thu khí vận hành thời, giả như ứng dụng trình tự đích nội tồn chiêm dụng lượng cao đáo nhất định trình độ, na ta bất tái bị kỳ tha đối tượng sở dẫn dụng đích hoãn tồn đối tượng tựu hội bị tự động thích phóng.
Smalltalk
[Biên tập]|a s1 s2|
s1:='hello'copy."Giá thị cá cường dẫn dụng"
s2:='world'copy."Giá thị cá cường dẫn dụng"
a:=WeakArraywith:s1with:s2.
aprintOn:Transcript.
ObjectMemorycollectGarbage.
aprintOn:Transcript."Lưỡng cá nguyên tố đô hoàn tại"
s1:=nil."Di trừ cường dẫn dụng"
ObjectMemorycollectGarbage.
aprintOn:Transcript."Đệ nhất cá nguyên tố tiêu thất"
s2:=nil."Di trừ cường dẫn dụng"
ObjectMemorycollectGarbage.
aprintOn:Transcript."Đệ nhị cá nguyên tố tiêu thất"
Lua
[Biên tập]weak_table=setmetatable({},{__mode="v"})
weak_table.item={}
print(weak_table.item)
collectgarbage()
print(weak_table.item)
Objective-C 2.0
[Biên tập]Tại Objective-C 2.0 trung, trừ liễu lạp ngập hồi thu, tự độngDẫn dụng kế sổDã hội thụ nhược dẫn dụng đích ảnh hưởng. Hạ diện giá cá lệ tử trung đích sở hữu biến lượng hòa chúc tính đô thị nhược dẫn dụng.
@interfaceWeakRef:NSObject
{
__weakNSString*str1;
__assignNSString*str2;
}
@property(nonatomic,weak)NSString*str3;
@property(nonatomic,assign)NSString*str4;
@end
weak
(__weak
) hòaassign
(__assign
) đích khu biệt tại vu, đương biến lượng chỉ hướng đích đối tượng bị trọng tân phân phối thời, biến lượng đích trị thị phủ hội cân trứ cải biến.weak
Thanh minh đích biến lượng hội biến vinil
,Nhiassign
Thanh minh đích biến lượng tắc hội bảo trì bất biến, thành vi nhất cáHuyền bãi chỉ châm.Tòng Mac OX 10.7 “Sư tử” hệ thống hòa iOS 5 khai thủy, tùy trứ Xcode 4.1 bản bổn đích thôi xuất,weak
Dẫn dụng bị dẫn nhập đáo Objective-C ngữ ngôn trung ( 4.2 bản bổn khai thủy chi trì iOS ). Lão bản bổn đích Mac OS X, iOS hòa GNUstep cận chi trì dụngassign
Thanh minh nhược dẫn dụng.
Vala
[Biên tập]classNode{
publicweakNodeprev;// nhược dẫn dụng khả tị miễn liệt biểu trung đích tiết điểm chi gian xuất hiện tuần hoàn dẫn dụng
publicNodenext;
}
Python
[Biên tập]>>>importweakref
>>>importgc
>>>classEgg:
...defspam(self):
...print("I'm alive!")
...
>>>obj=Egg()
>>>weak_obj=weakref.ref(obj)
>>>weak_obj().spam()
I'm alive!
>>>obj="Something else"
>>>gc.collect()
35
>>>weak_obj().spam()
Traceback (most recent call last):
File"<stdin>",line1,in<module>
AttributeError:'NoneType' object has no attribute 'spam'
Tham khảo văn hiến
[Biên tập]- ^java.lang.ref.[2013-12-28].(Nguyên thủy nội dungTồn đương vu 2022-06-06 ).
- ^Nicholas, Ethan."Understanding Weak References"Hỗ liên võng đương án quánĐíchTồn đương,Tồn đương nhật kỳ 2010-08-19..java.net(Hiệt diện tồn đương bị phân,Tồn vuHỗ liên võng đương án quán). Phát bố vu 2006 niên 5 nguyệt 4 nhật. Phóng vấn vu 2010 niên 10 nguyệt 1 nhật
- ^ReferenceQueues.[2013-12-28].(Nguyên thủy nội dungTồn đương vu 2011-09-30 ).
- ^weblogs.java.netJava ExamplesHỗ liên võng đương án quánĐíchTồn đương,Tồn đương nhật kỳ 2010-08-19.