程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java 引用,java引用

Java 引用,java引用

編輯:JAVA綜合教程

Java 引用,java引用


Java 對象的引用方式有如下四種,這四種方式主要是為了給垃圾回收提供更靈活的操作:

1、強引用,最常見的引用方式,當一個對象被一個或一個以上的引用變量引用時,它處於可達狀態,這時不會被垃圾回收器回收。

2、軟引用(SoftReference),通常用於內存敏感的程序中,當一個對象只有軟引用時,當系統空間足夠時,系統不會回收它,當系統空間不夠時,系統可能回收它。

3、弱引用(WeakReference),不管系統空間是否足夠,總會回收該對像所占用的內存。

4、虛引用(PhangtomReference),類似與完全沒有引用,虛引用主要用於跟蹤對象被垃圾回收的狀態,它不能單獨使用,必須和引用隊列(ReferenceQueue)一起使用,當該引用的對象被垃圾回收之後,虛引用將進入引用隊列中,虛引用不能通過get方法,獲取正常的引用。

示例如下:

import java.lang.ref.PhantomReference;
import java.lang.ref.ReferenceQueue;

public class PhantomReferenceTest {

    public static void main(String[] args) {
        String str = new String("Hello World");
        ReferenceQueue referenceQueue = new ReferenceQueue<>();
        
        PhantomReference<String> phantomReference = new PhantomReference<String>(str, referenceQueue);
        
        str = null;
        
        System.out.println(phantomReference.get());
        
        System.gc();
        System.runFinalization();
        
        System.out.println(referenceQueue.poll() == phantomReference);
    }

}

運行結果:

null
true

虛引用不能通過虛引用訪問被引用的對象,但是當垃圾回收後,虛引用進入了ReferenceQueue。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved