成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入核心 Java終止函數詳解

開發 后端
與Java 結構函數是相反,Java 終止函數履行最后的確認工作。一個Java對象不再被需要的時候,這個對象原先占有的空間就會期望能夠自動的由Java終止函數回收利用。

Java終止函數是什么?

對于對象而言,Java 終止函數履行***的確認工作。這與Java 結構函數是相反的,Java 結構函數創建以及初始化了一個Java類實例。當一個對象不在被需要以及這些資源必須被用于其它對象的時候,在一個類實例或者發行的系統資源,比如說文件描述符或者網絡插孔連接上,Java 終止函數可以被用來清除任務。你不需要證據或者為終止函數返回任何值。遺憾的是當一個類或者接口被載入的時候,目前的Java語言的介紹中沒有任何關于終止函數用于Java類或者接口的解釋。讓我們進一步研究一下java.lang對象的終止函數finalize()方法,提供一個方法實例。(如何使用PHP5中的Clone函數)

protected void finalize() throws Throwable

當一個Java對象不再被需要的時候,這個對象原先占有的空間就會期望能夠自動的由Java回收工具進行回收利用。這在Java中有著顯著的差異,并且在大多數的結構性程序語言,比如說C語言中,是不常見的。如果一個類實例實施終止函數finalize()方法,它所占用的空間就不能及時的被回收工具重新回收利用。最壞的情況是也許它根本就不再被回收了。任何實施終止函數finalize() 方法的類實例都經常調用終止對象。當它們不再被引用的時候,它們不能立即被Java回收工具回收,為最終程序Java回收工具將對象附加到指定的隊列。通常是由一個指定的線性程序執行的,在一些Java虛擬機上被稱為“參考句柄”。在最終程序階段,“終止函數”線性程序會執行每一個對象的終止函數finalize()方法。finalize() 成功執行之后Java回收工具將會交付對象,將它所占用的空間由“future”碎片收集功能再生。我沒有說“現有”,這意味著至少兩個碎片收集周期必須被要求用來回收終止對象。聽起來這像是有一些消耗的?正確。我們需要一些方法使得空間能夠重新利用。

線性終止函數在系統中沒有被給予***優先權。優先級更高的線程導致終止對象被排列,如果一個線性“Java終止函數”無法與這個效率保持一致,終止函數隊列就會持續增長,導致Java堆不停的被堆積。最終Java堆將會被耗盡,并且java.lang.OutOfMemoryError將會被扔掉。

對于任何對象而言,一個Java虛擬機將不會超過一次的引用終止函數finalize()方法。如果finalize()方法拋來了什么例外現象,對象的終止程序就會停止下來。

對于類的finalize()方法你幾乎可以自由的做任何事情。當你這樣做的時候,當對象不再被引用或者不再需要的時候,請不要期望存儲空間會被任何一個由Java回收程序回收再生的對象占領。為什么? finalize()方法將要完整的按進度完成的這種情況是不可控的。最壞的情況是,當這里沒有更多涉及到對象的時候,也許它甚至不會被解決。這意味著任何具有finalize()方法的對象被回收都是無法被保障的。這是內存管理發展的一個潛在危險,不必多說,有相當大的開銷是花費在隊列排列、運行finalize()方法以及將對象反射到下一個碎片整理環節上的。

如果你想在對象上運行函數,考慮到終止函數作為***一個方法,執行你自己的清理垃圾方法,這將會更加的平穩。完全信任終止函數來進行事后的垃圾清理工作是非常危險的,特別是當你的終止對象涉及到本地資源的時候。

Java 終止函數的實際操作體驗

ObjectWYieldFinalizer內,我們可以伴隨著線性yield()執行finalize()方法,這樣finalize()就不能完全執行,見代碼表一。線性yield()方法從正在運行的程序中阻止現有的線性程序執行,以及允許其它的線性程序執行。如果終止函數線性程序調用這種finalize()方法,它將會暫停執行。

代碼示例

  1.      /*   
  2.   * @Author : Jinwoo Hwang  
  3.  
  4.   * (C) Copyright IBM Corp. 2009. All Rights Reserved  
  5.  
  6.   */ 
  7.  
  8.   public class ObjectWYieldFinalizer {  
  9.  
  10.   protected void finalize() throws Throwable {  
  11.  
  12.   Thread.yield();  
  13.  
  14.   }  
  15.  
  16.   }  
  17.  
  18.   public class TestObjectWYieldFinalizer {  
  19.  
  20.   public static void main(String[] args) {  
  21.  
  22.   while(true){  
  23.  
  24.   ObjectWYieldFinalizer o1 = new ObjectWYieldFinalizer();  
  25.  
  26.   }  
  27.  
  28.   }  
  29.  
  30.   }  

 

【編輯推薦】

  1. Java語言常見字符串注意事項
  2. Java語言將淡出 JVM寶座爭奪戰預熱
  3. 淺談Java JDBC中的遞歸查詢樹
  4. 如何解決Java語言的十大問題
  5. Java常量定義需要注意的兩點
責任編輯:佚名 來源: IT專家網
相關推薦

2009-03-17 16:29:53

SQL ServerCLR.NET Framew

2010-07-19 10:05:07

jQuery

2010-09-09 10:09:07

Java內存分配

2010-09-14 09:30:04

Java多態

2010-09-26 14:08:41

Java垃圾回收

2009-09-25 09:36:55

Hibernate核心

2022-02-07 07:48:17

MyBatisJavaORM

2021-04-28 10:13:58

zookeeperZNode核心原理

2009-12-23 17:42:37

WPF Control

2014-04-09 09:42:30

ScalaJVM

2016-11-15 14:33:05

Flink大數據

2023-02-09 08:01:12

核心組件非阻塞

2009-12-25 14:03:46

Linux vi

2015-12-24 09:48:40

JavaScriptthis指針深

2025-06-16 05:10:00

2010-10-14 09:34:34

JVM局部變量

2010-04-27 09:17:23

內存屏障JVM

2024-03-29 11:42:21

Java虛擬機

2017-11-14 14:41:11

Java泛型IO

2018-05-16 11:05:49

ApacheFlink數據流
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情第一区 | 国产激情一区二区三区 | 亚洲精品国产成人 | 精品一区二区三区在线观看 | 亚洲精品国产成人 | 97久久久久久久久 | 99re国产视频| 一区二区三区四区在线视频 | 精品国产一区二区三区免费 | 国产在线精品一区二区 | 日韩欧美国产精品一区二区 | 国产精品欧美一区二区三区不卡 | 欧美成人第一页 | 中文字字幕一区二区三区四区五区 | 91污在线 | 国产精品91视频 | 97视频久久 | 欧美一级在线 | h在线免费观看 | 美国av片在线观看 | 亚洲精品欧美 | 久久久国产一区二区三区 | 国产成人精品一区二区 | 欧美精品一区二区三区一线天视频 | 99久久久久久99国产精品免 | 亚洲视频一区二区三区 | 国产精品一区二区无线 | 婷婷丁香在线视频 | 国精久久 | 国产免费av在线 | 成人影院一区二区三区 | 羞羞色在线观看 | 毛片在线看片 | 中文字幕在线第一页 | 亚洲在线一区二区 | 特黄色一级毛片 | 99re6热在线精品视频播放 | 中文字幕在线观看一区 | 午夜激情一区 | 91av在线免费观看 | 成人在线视频网址 |