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

Java開發平臺中的生命周期管理

開發 后端
在應用程序開發過程中,程序開發人員最關注的莫過于生命周期。對象生命周期的管理與控制直接跟應用程序的效率與安全有關。

對象的生命周期沒有大家想的那么復雜。其實其就是回答了兩個簡單的問題。什么時候需要創建對象?什么時候把對象消亡?這兩個問題解決了,那么對象的生命周期問題也就解決了。

一、傳統的對象生命周期管理方法。

為了對Java開發平臺中的生命周期管理方法有一個更加深刻的理解,筆者認為大家需要對傳統的生命周期管理方法先有一個了解。因為這有助于大家有一個相互的對比,從而會對Java語言中的生命周期管理方法會有一個比較直觀的印象。

在傳統的編程語言中,如C語言,其考慮對象的生命周期,主要是從對象與應用程序的執行效率出發的。為了追求應用程序***的執行效率,C語言要求在編寫應用程序的時候程序開發人員必須確定對象的存儲空間與生命周期,既可以通過堆餞或者限變量來實現。這么設計的話,好處是很明顯的。由于在程序開發的時候就涉及好了對象的存儲空間與生命周期,那么在程序運行的時候就不需要再花精力去創建對象。應用程序開發人員需要知道的是,在堆棧中創建與釋放對象的存儲空間是一件很容易且不用花費多少時間的事情。如在堆棧中創建對象空間只需要一條將棧頂指針向下移動的匯編指令,另一條匯編指令對應釋放存儲空間所需的將棧頂指針往上移動即可。所以應用程序的執行速度就會比較高,可以將對象存儲空間的分配和釋放置于比較有限考慮的地位。

但是這種管理方法的***缺陷就是靈活性不高。因為在應用程序開發的時候就必須要知道對象的確切數量、生命周期和存儲空間。如果后續需要對應用程序進行二次開發或者功能升級,如果涉及到添加新對象的話,那么修改的工作量就會很大。而且對于普通的應用程序開發人員來說,很難對所需要的對象的數量與生命周期,做出一個準確的預計??梢姡@種管理方式雖然可以保證應用程序的***運行速度,但是其局限性也是蠻大的。其不僅靈活性不高,而且對于應用程序開發者有更高的要求。

二、Java平臺下的對象生命周期管理方法。

在Java語言平臺下,其與傳統的對象管理方法有很大的不同。在Java語言平臺下,叫做動態創建對象。簡單地說,就是不是在應用程序開發的時候創建對象,而是在應用程序運行的過程中動態的根據需要建立對象。與上面的對象生命周期不同,動態的創建對象,只在應用程序運行的時候才會考慮需要創建多少對象,他們的生命周期有多久,對象的類型是什么等等。這些問題只有在應用程序代碼被執行的那一刻才能夠最終的確定下來。在應用程序開發的過程中不需要關注這些問題。如在Java語言開發中,一開始不需要建立對象。在需要對象的時候,可以利用new關鍵字來創建一個對象。

很明顯,由于對象的創建與消亡都是在應用程序運行的時候動態管理的,為此其靈活性要比傳統的靜態管理方式要高。當需要新的對象相時,只需要在代碼中利用NEW關鍵字創建一個即可,而不需要對其他的內容進行更改。為此,象Java這種采用動態機制來管理對象生命周期的語言,往往被認為其在升級、二次開發上面都比傳統的C語言程序要高。而且由于在需要的時候創建對象,為此對于應用程序開發者的要求也相對比較低一點。應用程序開發人員進入Java語言的門檻也會低許多。

但是其***的缺陷就是會影響到應用程序的執行效率。因為如果采用動態創建對象的話,則對象的存儲空間是在應用程序運行時被動態管理的。所以此時應用程序就需要耗費額外的時間在堆中分配存儲空間,這個時間就要遠遠的大于***種靜態管理對象在堆棧中創建存儲空間的時間。為此在同等條件下,Java語言開發的應用程序效率就比C語言開發的應用程序要低一點。如果不采取其他措施來優化Java語言性能的話,那么這個差距會很大。

為此Java語言采用這種對象生命周期管理方式,主要就是看中其對象管理過程中的靈活性。動態創建對象的管理方式可以方便解決一般化編程問題。這也會創建一些應用程序自定義平臺提供了幫助。

三、通過垃圾回收器來自動回收不需要用的對象。

動態管理對象的方式其除了在性能上有所欠缺外,最重要的是其在對象的回收上也有比較大的缺陷。如通過堆棧來創建對象(***種管理對象的方式),語言編譯器可以確定對象存活的時間,并在時間到期后自動收回對象所占用的空間。而如果在堆上創建對象(第二種對象管理方式),則語言編譯器就對應用程序對象的生命周期一無所知,不知道什么時候對象會消亡。為此如果不采取其他處理機知的話,則需要通過代碼來判斷對象的生命周期,并在適當的時候收回對象所占用的存儲空間。可是這種通過代碼來判斷對象生命周期的方式,會在很大程度上造成應用程序的安全漏洞,若發現內存泄露等等的安全隱患。

不過如果采用Java語言作為開發平臺的話,則不用擔心這個問題。因為在Java語言平臺下,提供了一種叫做垃圾回收器的管理機制。垃圾回收器就好像是一個監視器,其時刻監視著應用程序的運行。它可以自動發現應用程序對象何時消亡,從而幫助應用程序釋放對象所占用的空間。也就是說,如果采用Java語言的垃圾回收器,不需要再通過編碼來判斷什么時候消亡對象。這項工作的話,Java語言編譯器會幫助程序開發人員來完成。說的再直白一點,應用程序開發人員只需要負責創建對象即可。對象需要消亡的時候,其會自動消失(當然是在垃圾回收器的幫助下)。

可見通過Java垃圾回收器的幫助,可以解決通過堆來創建對象的不足之處。應用程序開發人員可以不用考慮該在什么時候釋放對象所占用的空間,不需要開發額外的代碼來管理這個問題。從而可以在***程度上避免應用程序內存泄露的安全隱患。

另外需要注意的一點就是,雖然Java語言的垃圾回收器已經解決了對象回收與空間釋放的問題。但是其對于性能方面的改善不能夠起到任何的作用。所以這個性能上的缺陷仍然成為Java語言的一個瓶頸資源。當然這個問題也不是我們能夠解決的,需要那些語言專家來想法設法提高動態分配對象空間的效率。我們應用程序開發者所能夠做的就是通過優化Java語言代碼,通過代碼復用與繼承等方式來提高應用程序的性能,讓應用程序的性能有所改善。

【編輯推薦】

  1. 四個有害的Java編碼習慣
  2. Java程序開發中的簡單內存分析
  3. Java中靜態數組與動態數組
責任編輯:彭凡 來源: IT專家網
相關推薦

2022-04-19 07:20:24

軟件開發安全生命周期SSDLC應用安全

2012-06-20 10:29:16

敏捷開發

2021-07-19 05:52:29

網絡生命周期網絡框架

2013-07-29 05:11:38

iOS開發iOS開發學習類的'生命周期'

2012-08-05 16:52:30

IBMRationalInnovate 20

2010-07-06 11:06:42

RationalJazz測試管理

2015-07-08 16:28:23

weak生命周期

2010-09-22 15:24:22

OracleAgile

2009-06-18 13:32:39

Java線程生命周期

2012-04-28 13:23:12

Java生命周期

2014-09-16 17:32:38

PTC物聯網

2024-05-28 07:55:31

SpringBean用域

2011-11-24 21:25:23

ibmdw

2010-05-27 10:19:21

BMC云計算生命周期管理

2010-05-17 22:06:41

數據安全電子文檔鼎普科技

2012-12-04 10:02:03

2020-03-13 07:33:28

物聯網生命周期管理IOT

2023-12-18 08:24:56

ViewModel數據操作Android

2009-08-12 18:39:01

軟件開發的生命周期

2009-06-11 11:28:35

JSF生命周期
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 香蕉久久av | 91av在线免费观看 | 中文字幕一区二区三区四区五区 | 狠狠干影院| 欧美video | 综合另类 | 日韩伦理一区二区 | 欧美一级欧美三级在线观看 | 久久免费精品视频 | 爱爱爱av| 最新中文字幕在线 | 亚洲 成人 在线 | 午夜影院普通用户体验区 | 久久97精品 | 久久久精品 | 一级欧美一级日韩片 | 蜜桃免费一区二区三区 | 精品久久一区二区三区 | 在线成人av | 久久最新网址 | 中文字幕福利视频 | 久久九九99 | 天天澡天天操 | 国产精品一区久久久久 | 日韩欧美国产成人一区二区 | 成人在线中文字幕 | 天天操操操操操 | 亚洲精品成人在线 | 免费视频一区 | xx性欧美肥妇精品久久久久久 | 黄色国产视频 | 精品欧美一区二区中文字幕视频 | 国产成人免费在线 | 成人免费一区二区三区视频网站 | 午夜成人免费视频 | 日韩欧美国产精品一区二区三区 | 国产一级在线观看 | 日韩成人精品一区 | 精品久久久久久久久久久久 | 免费一级黄色电影 | 久久不射电影网 |