国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2EE系統優化的幾點體會(一、對象)

2019-11-18 16:04:04
字體:
來源:轉載
供稿:網友

  說到系統優化,是一個比較復雜的問題,涉及到軟件的各個方面:需求、模塊劃分、數據庫設計、程序編碼以及一些特殊的優化方法如緩存技術等。而不同的應用又有其特殊的優化策略和技術。同時優化是貫穿系統從需求到實現再到維護的各個階段的一項活動,而在各個階段又有其不同的著眼點和具體方法。
本文立足于具體的J2EE項目實踐,結合一些已有的優化條例,提出自己的一些體會,也算是作為一次對實際項目經驗教訓的總結。
優化一般意義上說是提高已有系統的性能,減少如內存、數據庫、網絡帶寬等資源的占用,是在系統開發告一段落的前提下進行。一般是通過壓力測試或具體使用發現性能方面的問題,然后尋找性能瓶頸,并結合項目進度、人員安排、技術儲備等因素,提出相應的優化策略。
下面結合一些案例,進行具體的討論,并希望能總結出一些具有代表性的條例:

條例一:盡量重用對象,避免創建過多短時對象

對象在面向對象編程中隨處可見,甚至可以毫不夸張的說是:“一切都是對象”。如何更好的創建和使用對象,是優化中要考慮的一個重要方面。筆者將對象按使用分為兩大類:獨享對象和共享對象。獨享對象指由某個線程單獨擁有并維護其生命周期的對象,一般是通過new 創建的對象,線程結束且無其它對這個對象的引用,這個對象將由垃圾收集機制自動GC。共享對象指由多個線程共享的對象,各線程保持多個指向同一個對象的引用,任何對這個對象的修改都會在其它引用上得到體現,共享對象一般通過Factory工廠的getInstace()方法創建,單例模式就是創建共享對象的標準實現。獨享對象由于無其它指向同一對象的引用,不用擔心其它引用對對象屬性的修改,在多線程環境里,也就不需要對其可能修改屬性的方法加以同步,減少了出錯的隱患和復雜性,但由于需要為每個線程都創建對象,增加了對內存的需求和JVM GC的負擔。共享對象則需要進行適當的同步(避免較大的同步塊,同時防止死鎖)。
還有幾種特殊對象:不變對象和方法對象。不變對象指對象對外不含有修改對象屬性的方法(如set方法),外部要修改屬性只能通過new新的實例來實現。不變對象最大的好處就是無需擔心屬性被修改,避免了潛在的bug,并能無需任何額外工作(如同步)就很好的工作在多線程環境下。如jdk的String對象就是典型的不變對象。方法對象簡單的說就是僅包含方法,不含有屬性的對象。由于沒有對象屬性,方法中無需進行修改屬性的操作,也就能采用static方法或單例模式,避免每次使用都要new對象,減少對象的使用。
那么該如何確定創建何種對象,這就要結合對象的使用方式和生命周期、對象大小、構建花銷等方面來綜合考慮。如果對象生命周期較長,會存在修改操作,不能容忍其它線程對其的修改,就應該采用獨享對象,如常見的Bean類。而如果對象生命周期較長,且能為各個線程共享,就可以考慮共享對象。共享有2種常見情況,一種是系統全局對象,如配置屬性等,各個線程應該引用同一對象,任何對這個對象的修改都會影響其它線程;另一種是由于對象創建開銷較大,各線程對此對象是瞬時訪問,且無需再次讀取其屬性,如常見的Date 對象,一般這種對象的使用是瞬時的,比如把它format成String,如果每次創建然后等待GC就會浪費大量內存和CPU時間,較好做法就是做成共享對象,各個線程先set再使用,注意對進行set并訪問的方法要同步。不變對象一般使用在對象創建開銷較小(屬性較少,類層次較少),且需要能自由共享的情形。如一個對象里的常量對象,使用public static final AAA=new AAA(…) 創建。方法對象使用較廣,如Util類、DAO類等,這些對象提供操作其它對象(一般是bean對象)的接口,能對系統在層次和功能上進行解耦合。

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荥阳市| 青阳县| 儋州市| 柘城县| 瑞安市| 柳江县| 钟祥市| 朔州市| 滁州市| 金乡县| 呼图壁县| 海伦市| 沂南县| 平舆县| 隆昌县| 仁化县| 桓台县| 广安市| 旌德县| 瓮安县| 讷河市| 乌拉特前旗| 呼伦贝尔市| 垫江县| 启东市| 昭平县| 平陆县| 睢宁县| 东乡县| 东辽县| 酒泉市| 邢台县| 太保市| 班玛县| 宜良县| 积石山| 平原县| 建始县| 丁青县| 达日县| 北流市|