從虛擬機器視角談Java應用效能最佳化

來源:互聯網
上載者:User

Java 的普及和廣泛應用,以及其基於虛擬機器啟動並執行機制,使得效能問題越來越重要。本文從 JAVA 虛擬機器的角度,特別是記憶體回收機制來剖析了 Java 應用程式設計需要注意的方面,並總結出了幾條非常容易被忽視的設計、編寫代碼的原則和習慣。最後通過執行個體來介紹幾種主要的 Java Profiler 工具對我們進行開發和分析的協助。本文要求讀者具有一定的 JAVA 虛擬機器的基礎知識,一定的 Java 設計模式和開發經驗。通過閱讀本文,讀者能從 Java 啟動並執行本質上對效能方面有一個很好的把握,在設計和編碼的過程中,遵循文中總結的原則和習慣,對於提高效能、可維護性、可擴充性很有協助。同時讓讀者瞭解利用 profiler 工具來分析 Java 程式的效能。

開始之前

Java 平台已無處不在,Java EE、Java SE、Java ME 和 Java Card,Java 的發展為無數程式員提供了工作機會,都是“Java”,然而除了基本的 Java 文法大都一致外,程式員必須基於不同的平台有不同的考慮,學習不同平台的特點:

不同平台的環境

Java EE 所啟動並執行硬體伺服器、作業系統,Java SE 所在 PC 機的體繫結構(X86/X64、MAC、SPARC 等),Java ME 所啟動並執行手機或行動裝置,Java Card 所在的智慧卡晶片類型等;

不同平台虛擬機器的特點

如是否支援多線程(這似乎是毋庸置疑,但是在 Java Card 平台上,由於計算資源相當有限,多線程目前還不被支援),Java EE 和 Java SE 的虛擬機器特性幾乎相同,而 Java ME 虛擬機器(KVM)根據行動裝置的特點進行裁剪和最佳化,以適應於有限的實體記憶體和儲存空間,而根據裝置處理能力的強弱還分為 CDC(Connected Device Configuration,連網裝置配置)和 CLDC(Connected Limited Device Configuration,連網受限裝置配置),更小裝置和智慧卡的虛擬機器 JCVM(Java Card VM)更是裁剪了許多特性,如多線程、許多複雜資料類型的支援、主動的垃圾收集機制等,這甚至導致了對 Java 文法集的裁剪;

不同平台的 API 和可用的第三方庫

Java EE 和 Java SE 是超集與子集的關係,因為她們所處的電腦平台和作業系統目前很好的相容,而 Java ME 和 Java Card 與 EE 和 SE 是 Totally different,除了 java.lang.*,部分 java.io.* 等核心類庫保留外,其他的 API 和類庫完全不同。java.microedition.* 和 javax.microedition.* 表明這是 ME 平台,javacard.* 表明這是 Java Card 平台。同時,由於 EE 和 SE 平台的普及程度和開發人員人數,使得之上的第三方庫十分海量。深入瞭解和掌握平台的 API 和庫是不同平台程式員進階的必由之路。

從這個角度上說,Java 在不同的平台之間,並不是“一次編寫、處處運行”,考慮應用程式的設計和最佳化的時候,首先要看是在什麼平台上,因為源於以上不同的特點,編程模型、設計模式,甚至語言集都不盡相同。在這裡我們著重考慮 Java EE 和 SE 的視角,但有很多設計、編程原則和習慣對於所有平台的程式員來說,都適用。

JAVA 虛擬機器

JAVA 虛擬機器是支援 Java 語言啟動並執行基礎,避開過多的 JVM 和實現的技術細節,我們對基礎架構進行瞭解,是進行應用程式最佳化必不可少的。如下圖所示:

圖 1. JAVA 虛擬機器體繫結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.