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

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

構建高性能J2EE應用的10個技巧

2019-11-17 06:12:10
字體:
來源:轉載
供稿:網友

  構建高性能的J2EE應用不但需要了解常用的實施技巧。下面介紹最常用的10種有效方法,可幫助架構設計師們快速成為這方面的專家。

  java性能的基礎----內存治理

  任何Java應用,單機的或J2EE的性能基礎都可歸結到你的應用是如何治理內存的問題。Java的內存治理包括兩個重要任務:內存的分配和內存的回收。在內存的分配中,目標是要減少需要創建的對象。 內存回收是導致性能下降的普遍原因。也就是說,內存中的對象越多,垃圾回收越困難。所以我們對創建對象的態度應該越保守越好。

  在J2EE應用中常見的兩個內存有關的問題是:游離的對象(也被稱為內存泄露)和對象循環(指大量頻繁創建和刪除-在Java中體現為解除引用---對象)。

  我們應注重確保所有可到達的對象實際是活的,即這些對象不但在內存中,而且也要在執行的代碼中是存在的。當對象在應用中已經沒有用了,而我們卻忘記了刪除對該對象的引用時,游離的對象就出現了。

  我們知道垃圾回收會占用CPU時間。短期對象的大量創建增加了垃圾回收的頻率會造成性能下降。

  不要在Servlet中實現業務邏輯

  在構建J2EE應用時,架構工程師通常會使用到J2EE的基本部分,Servlet。

  假如架構師不使用session Beans, Entity Beans, 或 Message Beans, 那么改進性能的方法就很少。只能采用增加CPU或更多的物理服務器等方法。EJB使用了緩存(cache)和資源池等方法可以提高性能和擴展性。

  盡可能使用本地接口訪問EJB

  在早期的J2EE (遵循EJB1.X規范)應用中,訪問EJB是`通過RMI使用遠程接口實現的。隨著EJB2.0的出現,可以通過本地接口訪問EJB,不再使用RMI,在同一個JVM中使用遠程方法已經少多了。但是現在還是有一些使用EJB1.X實現的應用和不知道使用本地接口的一些EJB新手。為說明這點,我們作個比較:

  1, 客戶端應用調用本地Stub
  2, 該Stub裝配參數
  3, 該Stub傳到skeleton
  4, 該skeleton分解參數
  5, 該skeleton調用EJB對象
  6, EJB對象執行容器服務
  7, EJB對象調用企業BEAN實例
  8, 企業BEA執行操作
  9, 執行組裝/分解步驟然后返回

  與遠程接口處理相比較,本地接口的EJB方法是:

  1. 客戶端調用本地對象
  2. 本地對象執行容器服務
  3. 本地對象調用企業Bean實例
  4. 企業Bean實例執行操作
  5. 沒有其他返回步驟!!



  假如你不需要從遠程的客戶端訪問一個非凡EJB,就應該使用本地方法。

  在實現Session Bean的服務中封裝對實體EJB的訪問

  從Servlet訪問實體EJB不但效率低而且難于維護。使用Session Facade(會話外觀)模式可把對實體EJB的訪問封裝在會話EJB中,在該會話EJB中通過使用本地接口訪問實體EJB而避免過多的遠程調用。

  這項技術會有額外的性能和擴展方面的好處,這是因為會話和實體EJB可以使用緩存和資源池技術來進行改進。另外,由于負載的需要,會話和實體EJB可被擴展部署到其他硬件設備上,這比將Servlet層復制擴展到其他硬件設備上要簡單的多。

  盡量粗粒度訪問遠程EJB

  當訪問遠程EJB時,調用set/get方法將產生過多的網絡請求,同時也導致遠程接口處理的過載。為避免這種情況,可考慮將數據屬性集中在一個對象中,這樣通過一次對遠程EJB的調用就可以傳遞所有數據。這項技術就是數據傳輸對象(Data Transfer Object)模式。

  優化SQL

  J2EE的架構設計工程師和開發人員通常不是SQL專家或經驗豐富的數據庫治理員。首先應該確保SQL使用了數據庫提供的索引支持。在某些情況下,將數據庫的索引和數據分開存放會提高性能。但要知道,增加額外的索引可以提高SELECT性能但也會降低INSERT的性能。對于某些數據庫,關聯表之間的排序會嚴重影響性能。可以多向數據庫治理員咨詢。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 醴陵市| 桐庐县| 翼城县| 柞水县| 海南省| 永兴县| 屏东市| 聂荣县| 延庆县| 兰溪市| 云林县| 荣成市| 竹山县| 莱阳市| 友谊县| 邯郸市| 易门县| 雷州市| 庆安县| 康马县| 永嘉县| 民乐县| 思南县| 贵溪市| 台北县| 库伦旗| 烟台市| 佳木斯市| 来安县| 庆云县| 清水河县| 巴东县| 电白县| 温泉县| 眉山市| 额济纳旗| 龙井市| 平塘县| 华阴市| 香港| 商南县|