<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      java reference

      文檔

      java reference

      JavaReference是java中的引用類,它的作用是用來給普通對象進行包裝,從而在JVM在GC時,按照引用類型的不同,在回收時采用不同的邏輯。java主要有4種引用方式。
      推薦度:
      導讀JavaReference是java中的引用類,它的作用是用來給普通對象進行包裝,從而在JVM在GC時,按照引用類型的不同,在回收時采用不同的邏輯。java主要有4種引用方式。

      ? ?

      Java reference是什么?讓我們一起來了解一下吧!

      Java Reference是java中的引用類,它的作用是用來給普通對象進行包裝,從而在JVM在GC時,按照引用類型的不同,在回收時采用不同的邏輯。java主要有4種引用方式。它們分別是強引用StrongReference、軟引用SoftReference、弱引用WeakReference和虛引用PhantomReference。

      softreference引用示例:? ?

      ?ReferenceQueue?referenceQueue?=?new?ReferenceQueue<>();
      ????????SoftReference?softReference?=?new?SoftReference<>("abc",?referenceQueue);
      ????????System.gc();
      ????????System.out.println(softReference.get());
      ????????Reference?reference?=?referenceQueue.poll();
      ????????System.out.println(reference);

      PhantomReference引用示例:

      public?class?PhantomReferenceTest?{
      ?
      ????public?static?void?main(String[]?args)?{
      ????????ReferenceQueue?rq?=?new?ReferenceQueue<>();
      ????????PhantomReference?reference?=?new?PhantomReference<>(new?String("cord"),?rq);
      ????????System.out.println(reference.get());
      ????????System.gc();
      ????????System.runFinalization();
      ????????System.out.println(rq.poll()?==?reference);
      ????}
      }

      WeakReference引用示例:

      public?class?WeakReferenceTest?{
      ????public?static?void?main(String[]?args)?{
      ????????ReferenceQueue?rq?=?new?ReferenceQueue<>();
      ????????//這里必須用new?String構建字符串,而不能直接傳入字面常量字符串
      ????????Reference?r?=?new?WeakReference<>(new?String("java"),?rq);
      ????????Reference?rf;
      ????????//一次System.gc()并不一定會回收A,所以要多試幾次
      ????????while((rf=rq.poll())?==?null)?{
      ????????????System.gc();
      ????????}
      ????????System.out.println(rf);
      ????????if?(rf?!=?null)?{
      ????????????//引用指向的對象已經被回收,存入引入隊列的是弱引用本身,所以這里最終返回null
      ????????????System.out.println(rf.get());
      ????????}
      ????}
      }

      下面是Reference中的幾個關鍵屬性:

      ??//關聯的對象的引用,根據引用類型不同gc針對性處理
      ????private?T?referent;???????
      ????//引用注冊的隊列,如果有注冊隊列則回收引用會加入該隊列
      ????volatile?ReferenceQueue?queue;
      ?
      ????//上面引用隊列referenceQueue中保存引用的鏈表
      ????/*????active:?????NULL?//未加入隊列前next指向null
      ?????*????pending:????this
      ?????*????Enqueued:???next?reference?in?queue?(or?this?if?last)
      ?????*????Inactive:???this
      ?????*/
      ????Reference?next;
      ?
      ?
      ????/*?When?active:???由gc管理的引用發現鏈表的下一個引用
      ?????*?????pending:???pending鏈表中的下一個元素
      ?????*???otherwise:???NULL
      ?????*/
      ????transient?private?Reference?discovered;??/*?used?by?VM?*/
      ?
      ????/*?
      ?????*等待入隊列的引用鏈表,gc往該鏈表加引用對象,Reference-handler線程消費該鏈表。
      ?????*?它通過discovered連接它的元素?
      ?????*/?????
      ????private?static?Reference?pending?=?null;

      以上就是小編今天的分享了,希望可以幫助到大家。

      文檔

      java reference

      JavaReference是java中的引用類,它的作用是用來給普通對象進行包裝,從而在JVM在GC時,按照引用類型的不同,在回收時采用不同的邏輯。java主要有4種引用方式。
      推薦度:
      為你推薦
      資訊專欄
      熱門視頻
      相關推薦
      java reflect java regex java openssl java orm java outer java outofmemory java overload java resources java resolve java require java region java render java override java pandas java parse java repeat java parser java request java partial java requests java redirect java rectangle java openjdk java opengl java openfire java onvif java inputstreamreader java influxdb java implements java image java htmlunit java hibernate java number java nslookup java notify java node類 java hdfs java hashcode java getbytes java geotools
      Top 少妇高潮太爽了在线视频