自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET 強引用與弱引用

開發(fā)
如果應用程序的代碼可以訪問一個正由該程序使用的對象,垃圾回收器就不能收集該對象, 那么,就認為應用程序對該對象具有強引用。
  • 強引用

如果應用程序的代碼可以訪問一個正由該程序使用的對象,垃圾回收器就不能收集該對象, 那么,就認為應用程序對該對象具有強引用。

要建立強引用并重新使用該對象,請將 WeakReference 的 Target 屬性強制轉換為該對象的類型。如果 Target 屬性返回 null,則表示對象已被收集;否則,您可繼續(xù)使用該對象,因為應用程序已重新獲得了對它的強引用。

  • 弱引用

弱引用允許應用程序訪問對象,同時也允許垃圾回收器收集相應的對象。如果不存在強引用,則弱引用的有限期只限于收集對象前的一個不確定的時間段。
使用弱引用時,應用程序仍可對該對象進行強引用,這樣做可防止該對象被收集。但始終存在這樣的風險:垃圾回收器在重新建立強引用之前先處理該對象。
要對某個對象建立弱引用,請使用要跟蹤的對象的實例創(chuàng)建一個 WeakReference。 然后將 Target 屬性設置為該對象,將該對象設置為 null。

  • 適合弱引用的對象
    • 占用大量內存,但通過垃圾回收功能回收以后很容易重新創(chuàng)建。
  • 弱引用分類
    • Short  垃圾回收功能回收對象后,短弱引用的目標會變?yōu)?null。弱引用本身是托管對象,和任何其他托管對象一樣需要經(jīng)過垃圾回收。短弱引用是 WeakReference 的默認構造函數(shù)。
    • Long

調用對象的 Finalize 方法后,會保留長弱引用。這樣,您就可以重新創(chuàng)建該對象,但該對象仍保持不可預知的狀態(tài)。要使用長引用,請在 WeakReference 構造函數(shù)中指定 true。如果對象的類型沒有 Finalize 方法,則會應用短弱引用功能,該弱引用只在目標被收集之前有效,運行終結器之后可以隨時收集目標。

  • 弱引用使用準則
    • 僅在必要時使用長弱引用,因為在終止后對象的狀態(tài)是不可預知的
    • 避免對小對象使用弱引用,因為指針本身可能和對象一樣大,或者比對象還大
    • 不應將弱引用作為內存管理問題的自動解決方案,而應開發(fā)一個有效的緩存策略來處理應用程序的對象。

原文鏈接:http://www.cnblogs.com/liusuqi/p/3157987.html

責任編輯:陳四芳 來源: M守護神
相關推薦

2020-12-02 09:01:40

Java基礎

2024-05-20 08:58:13

Java引用類型垃圾回收器

2021-10-18 15:50:49

Android強引用軟引用

2009-06-19 16:19:23

Java對象引用

2013-09-16 16:48:50

Android優(yōu)化軟引用

2021-12-09 15:45:09

Python弱引用代碼

2009-06-16 11:26:22

弱引用內存泄露

2020-11-11 08:55:32

SparkJava磁盤

2021-10-08 21:00:52

數(shù)據(jù)弱引用對象

2015-11-02 17:20:00

Java弱引用

2022-03-08 13:06:25

引用隊列jvm變量

2021-01-07 14:20:55

JavaGC

2018-11-16 16:10:28

JavaOOM編程語言

2022-01-02 06:55:08

Node.js ObjectWrapAddon

2020-02-09 17:23:17

Python數(shù)據(jù)字典

2022-06-30 09:32:46

人工智能AI機器學習

2009-10-10 09:53:07

.NET值類型

2009-07-24 17:43:35

循環(huán)引用ASP.NET AJA

2024-06-28 12:47:29

C#弱引用底層

2011-06-13 08:41:56

指針引用
點贊
收藏

51CTO技術棧公眾號