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

Java開發(fā)平臺(tái)中的生命周期管理

開發(fā) 后端
在應(yīng)用程序開發(fā)過程中,程序開發(fā)人員最關(guān)注的莫過于生命周期。對(duì)象生命周期的管理與控制直接跟應(yīng)用程序的效率與安全有關(guān)。

對(duì)象的生命周期沒有大家想的那么復(fù)雜。其實(shí)其就是回答了兩個(gè)簡(jiǎn)單的問題。什么時(shí)候需要?jiǎng)?chuàng)建對(duì)象?什么時(shí)候把對(duì)象消亡?這兩個(gè)問題解決了,那么對(duì)象的生命周期問題也就解決了。

一、傳統(tǒng)的對(duì)象生命周期管理方法。

為了對(duì)Java開發(fā)平臺(tái)中的生命周期管理方法有一個(gè)更加深刻的理解,筆者認(rèn)為大家需要對(duì)傳統(tǒng)的生命周期管理方法先有一個(gè)了解。因?yàn)檫@有助于大家有一個(gè)相互的對(duì)比,從而會(huì)對(duì)Java語(yǔ)言中的生命周期管理方法會(huì)有一個(gè)比較直觀的印象。

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

但是這種管理方法的***缺陷就是靈活性不高。因?yàn)樵趹?yīng)用程序開發(fā)的時(shí)候就必須要知道對(duì)象的確切數(shù)量、生命周期和存儲(chǔ)空間。如果后續(xù)需要對(duì)應(yīng)用程序進(jìn)行二次開發(fā)或者功能升級(jí),如果涉及到添加新對(duì)象的話,那么修改的工作量就會(huì)很大。而且對(duì)于普通的應(yīng)用程序開發(fā)人員來說,很難對(duì)所需要的對(duì)象的數(shù)量與生命周期,做出一個(gè)準(zhǔn)確的預(yù)計(jì)。可見,這種管理方式雖然可以保證應(yīng)用程序的***運(yùn)行速度,但是其局限性也是蠻大的。其不僅靈活性不高,而且對(duì)于應(yīng)用程序開發(fā)者有更高的要求。

二、Java平臺(tái)下的對(duì)象生命周期管理方法。

在Java語(yǔ)言平臺(tái)下,其與傳統(tǒng)的對(duì)象管理方法有很大的不同。在Java語(yǔ)言平臺(tái)下,叫做動(dòng)態(tài)創(chuàng)建對(duì)象。簡(jiǎn)單地說,就是不是在應(yīng)用程序開發(fā)的時(shí)候創(chuàng)建對(duì)象,而是在應(yīng)用程序運(yùn)行的過程中動(dòng)態(tài)的根據(jù)需要建立對(duì)象。與上面的對(duì)象生命周期不同,動(dòng)態(tài)的創(chuàng)建對(duì)象,只在應(yīng)用程序運(yùn)行的時(shí)候才會(huì)考慮需要?jiǎng)?chuàng)建多少對(duì)象,他們的生命周期有多久,對(duì)象的類型是什么等等。這些問題只有在應(yīng)用程序代碼被執(zhí)行的那一刻才能夠最終的確定下來。在應(yīng)用程序開發(fā)的過程中不需要關(guān)注這些問題。如在Java語(yǔ)言開發(fā)中,一開始不需要建立對(duì)象。在需要對(duì)象的時(shí)候,可以利用new關(guān)鍵字來創(chuàng)建一個(gè)對(duì)象。

很明顯,由于對(duì)象的創(chuàng)建與消亡都是在應(yīng)用程序運(yùn)行的時(shí)候動(dòng)態(tài)管理的,為此其靈活性要比傳統(tǒng)的靜態(tài)管理方式要高。當(dāng)需要新的對(duì)象相時(shí),只需要在代碼中利用NEW關(guān)鍵字創(chuàng)建一個(gè)即可,而不需要對(duì)其他的內(nèi)容進(jìn)行更改。為此,象Java這種采用動(dòng)態(tài)機(jī)制來管理對(duì)象生命周期的語(yǔ)言,往往被認(rèn)為其在升級(jí)、二次開發(fā)上面都比傳統(tǒng)的C語(yǔ)言程序要高。而且由于在需要的時(shí)候創(chuàng)建對(duì)象,為此對(duì)于應(yīng)用程序開發(fā)者的要求也相對(duì)比較低一點(diǎn)。應(yīng)用程序開發(fā)人員進(jìn)入Java語(yǔ)言的門檻也會(huì)低許多。

但是其***的缺陷就是會(huì)影響到應(yīng)用程序的執(zhí)行效率。因?yàn)槿绻捎脛?dòng)態(tài)創(chuàng)建對(duì)象的話,則對(duì)象的存儲(chǔ)空間是在應(yīng)用程序運(yùn)行時(shí)被動(dòng)態(tài)管理的。所以此時(shí)應(yīng)用程序就需要耗費(fèi)額外的時(shí)間在堆中分配存儲(chǔ)空間,這個(gè)時(shí)間就要遠(yuǎn)遠(yuǎn)的大于***種靜態(tài)管理對(duì)象在堆棧中創(chuàng)建存儲(chǔ)空間的時(shí)間。為此在同等條件下,Java語(yǔ)言開發(fā)的應(yīng)用程序效率就比C語(yǔ)言開發(fā)的應(yīng)用程序要低一點(diǎn)。如果不采取其他措施來優(yōu)化Java語(yǔ)言性能的話,那么這個(gè)差距會(huì)很大。

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

三、通過垃圾回收器來自動(dòng)回收不需要用的對(duì)象。

動(dòng)態(tài)管理對(duì)象的方式其除了在性能上有所欠缺外,最重要的是其在對(duì)象的回收上也有比較大的缺陷。如通過堆棧來創(chuàng)建對(duì)象(***種管理對(duì)象的方式),語(yǔ)言編譯器可以確定對(duì)象存活的時(shí)間,并在時(shí)間到期后自動(dòng)收回對(duì)象所占用的空間。而如果在堆上創(chuàng)建對(duì)象(第二種對(duì)象管理方式),則語(yǔ)言編譯器就對(duì)應(yīng)用程序?qū)ο蟮纳芷谝粺o所知,不知道什么時(shí)候?qū)ο髸?huì)消亡。為此如果不采取其他處理機(jī)知的話,則需要通過代碼來判斷對(duì)象的生命周期,并在適當(dāng)?shù)臅r(shí)候收回對(duì)象所占用的存儲(chǔ)空間。可是這種通過代碼來判斷對(duì)象生命周期的方式,會(huì)在很大程度上造成應(yīng)用程序的安全漏洞,若發(fā)現(xiàn)內(nèi)存泄露等等的安全隱患。

不過如果采用Java語(yǔ)言作為開發(fā)平臺(tái)的話,則不用擔(dān)心這個(gè)問題。因?yàn)樵贘ava語(yǔ)言平臺(tái)下,提供了一種叫做垃圾回收器的管理機(jī)制。垃圾回收器就好像是一個(gè)監(jiān)視器,其時(shí)刻監(jiān)視著應(yīng)用程序的運(yùn)行。它可以自動(dòng)發(fā)現(xiàn)應(yīng)用程序?qū)ο蠛螘r(shí)消亡,從而幫助應(yīng)用程序釋放對(duì)象所占用的空間。也就是說,如果采用Java語(yǔ)言的垃圾回收器,不需要再通過編碼來判斷什么時(shí)候消亡對(duì)象。這項(xiàng)工作的話,Java語(yǔ)言編譯器會(huì)幫助程序開發(fā)人員來完成。說的再直白一點(diǎn),應(yīng)用程序開發(fā)人員只需要負(fù)責(zé)創(chuàng)建對(duì)象即可。對(duì)象需要消亡的時(shí)候,其會(huì)自動(dòng)消失(當(dāng)然是在垃圾回收器的幫助下)。

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

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

【編輯推薦】

  1. 四個(gè)有害的Java編碼習(xí)慣
  2. Java程序開發(fā)中的簡(jiǎn)單內(nèi)存分析
  3. Java中靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組
責(zé)任編輯:彭凡 來源: IT專家網(wǎng)
相關(guān)推薦

2022-04-19 07:20:24

軟件開發(fā)安全生命周期SSDLC應(yīng)用安全

2012-06-20 10:29:16

敏捷開發(fā)

2021-07-19 05:52:29

網(wǎng)絡(luò)生命周期網(wǎng)絡(luò)框架

2013-07-29 05:11:38

iOS開發(fā)iOS開發(fā)學(xué)習(xí)類的'生命周期'

2012-08-05 16:52:30

IBMRationalInnovate 20

2010-07-06 11:06:42

RationalJazz測(cè)試管理

2010-09-22 15:24:22

OracleAgile

2015-07-08 16:28:23

weak生命周期

2009-06-18 13:32:39

Java線程生命周期

2012-04-28 13:23:12

Java生命周期

2014-09-16 17:32:38

PTC物聯(lián)網(wǎng)

2024-05-28 07:55:31

SpringBean用域

2011-11-24 21:25:23

ibmdw

2010-05-27 10:19:21

BMC云計(jì)算生命周期管理

2010-05-17 22:06:41

數(shù)據(jù)安全電子文檔鼎普科技

2012-12-04 10:02:03

2020-03-13 07:33:28

物聯(lián)網(wǎng)生命周期管理IOT

2023-12-18 08:24:56

ViewModel數(shù)據(jù)操作Android

2009-08-12 18:39:01

軟件開發(fā)的生命周期

2009-06-11 11:28:35

JSF生命周期
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产成人精品久久二区二区91 | 91精品国产综合久久久久久丝袜 | 成人免费观看视频 | 天天视频一区二区三区 | 日本视频免费观看 | 在线永久看片免费的视频 | 欧美精品日韩精品国产精品 | 一区二区三区四区av | 中文精品视频 | 日本韩国欧美在线观看 | 欧美成人精品一区二区男人看 | 亚洲一区二区三区免费 | 99精品欧美一区二区三区综合在线 | 欧美日韩在线不卡 | 超级碰在线| 国产成人精品a视频 | 免费在线观看成人av | 天天干天天想 | 久久男人 | 国产日韩欧美 | 亚洲成色777777在线观看影院 | 午夜视频在线 | 黄色片网站在线观看 | 中文字幕一区二区在线观看 | 久久亚 | 日韩一级免费 | 不卡一二三区 | 黄色毛片大全 | 亚洲欧美中文字幕 | 亚洲最大成人综合 | 天天弄天天操 | 午夜精品久久久久久久久久久久久 | 亚洲成人免费观看 | 91国产视频在线观看 | 久久99精品久久 | 鸡毛片| 国产精品成人国产乱一区 | 亚洲精品久久区二区三区蜜桃臀 | 密室大逃脱第六季大神版在线观看 | 久在线| 日日日日操 |