自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JVM for Linux JIT診斷技術(shù)簡介

開發(fā) 后端
JVM for Linux JIT診斷技術(shù)你是否熟悉,這里就向大家簡單介紹一下Just-In-Time(JIT)編譯器和MixedModeInterpreter(MMI)優(yōu)化技術(shù),在IBM的JVM1.3.1和1.4.2中使用了這兩種技術(shù),它們對于從SunHotspotJVM上遷移過來的Java程序可能產(chǎn)生影響。 ,

本文向大家描述一下JVM for Linux JIT診斷,在將一個Java程序從使用SunJDK的平臺遷移到使用IBMJDK的平臺上時,重要的是要了解在這兩個供應(yīng)商的JVM中使用的優(yōu)化技術(shù)之間的差異,這些差異可能會對程序產(chǎn)生影響,以及如何通過調(diào)節(jié)IBMJVM中可用的優(yōu)化機(jī)制來獲得更好的性能。

JVM for Linux JIT診斷簡介

“一次編寫,到處運(yùn)行”(WORA)的原則只有在將純Java™的字節(jié)碼從一個平臺的某個特定版本的Java虛擬機(jī)(JVM)移植到另外一個不同平臺上完全相同版本的JVM上時才適用。

然而,有時這種遷移過程并不是無縫的??梢詫@個遷移過程產(chǎn)生影響的一個因素是不同供應(yīng)商的優(yōu)化技術(shù)的內(nèi)部實(shí)現(xiàn)之間存在差異。

在將一個Java程序從使用SunJDK的平臺遷移到使用IBMJDK的平臺上時,重要的是要了解在這兩個供應(yīng)商的JVM中使用的優(yōu)化技術(shù)之間的差異,這些差異可能會對程序產(chǎn)生影響,以及如何通過調(diào)節(jié)IBMJVM中可用的優(yōu)化機(jī)制來獲得更好的性能。

本文著重介紹對于在JIT中碰到的問題的診斷,在從SunHotSpotJVM遷移到IBM基于JIT的JVM時可能會碰到這些問題。

雖然本文中介紹的大部分內(nèi)容對于IBMJVM1.3.1和1.4.2都是普遍適用的,但是尤其適用于IBMJVM1.3.1和JVM1.4.2forLinux,包括POWER和PowerPC架構(gòu)上的Linux。

在Sun的JVM1.3.1中,JIT和HotSpot編譯器都已經(jīng)包含其中了,可以使用-server或-hotspot選項(xiàng)(默認(rèn)為客戶機(jī)HotSpotVM)來調(diào)用,使用-classic選項(xiàng)調(diào)用JIT,-hotspot選項(xiàng)是隱含的默認(rèn)值。在SunJDK1.4.1及之后的版本中,只能使用HotSpot了。IBMJVM1.3.1和1.4.2使用了JIT和MMI的組合,這是默認(rèn)的運(yùn)行模式,可以實(shí)現(xiàn)與HotSpot相同的功能。#p#

JVM JIT和MMI

用來提高Java程序性能的工具是Just-In-Time(JIT)編譯器。JIT是一個代碼生成器,它將Java字節(jié)碼轉(zhuǎn)換成宿主平臺的本地代碼。Java程序使用JIT調(diào)用時的運(yùn)行速度通常都比使用解釋程序執(zhí)行字節(jié)碼時的速度更快。

當(dāng)JVM啟動時,會有很多方法被加載到JVM中并執(zhí)行。

如果JIT被禁用了,那么JVM啟動會很快,但是在大部分情況中,運(yùn)行程序的速度都會與解釋字節(jié)碼的速度一樣慢。如果JIT被啟用了,但是并沒有使用JIT的一些自適應(yīng)式優(yōu)化機(jī)制,就會試圖在啟動時對所有方法進(jìn)行編譯。對于諸如applet之類的小程序來說,當(dāng)啟動JVM的時間長于運(yùn)行程序的時間時,就可能會成為問題。

IBMJVMMixedModeInterpreter(MMI)與JIT緊密地結(jié)合在一起,它可以減輕這個問題。它可以用于與HotSpotVM相同的目的,將編譯方法延伸到JVM的生命期之外。除了其他特性之外,MMI還可以計算一個特定的方法被執(zhí)行了多少次。為了達(dá)到平衡的性能,MMI對于IBMJVM支持的每種平臺都有一個默認(rèn)的上限計數(shù)器,這是經(jīng)過仔細(xì)選擇的,并經(jīng)過了廣泛的測試和研究。

每執(zhí)行一次方法,該方法在MMI中的上限計數(shù)器就減1。當(dāng)一個方法的上限計數(shù)器達(dá)到零(0)時,就可以使用JIT將這個方法編譯成本地代碼了。因此,與HotSpotVM一樣,高頻率使用的方法——“熱點(diǎn)”——都會在啟動JVM之后由JIT進(jìn)行編譯,而低頻度使用的方法則會在之后進(jìn)行編譯,或者可能在整個JVM進(jìn)程的生命周期中都不會被編譯。

IBMJVM1.3.1和1.4.2還為改進(jìn)某些Java程序的啟動時間而提供了一個非標(biāo)準(zhǔn)的選項(xiàng)-Xquickstart。-Xquickstart選項(xiàng)會導(dǎo)致使用優(yōu)化選項(xiàng)的子集來運(yùn)行JIT;也就是說,快速編譯的方法。這個選項(xiàng)適用于短期運(yùn)行的程序,特別是那些執(zhí)行時間不集中在少量的“熱點(diǎn)”方法中的程序。如果-Xquickstart選項(xiàng)用在長時間運(yùn)行的程序上,而這些程序又包含一些熱點(diǎn)方法,那么這個選項(xiàng)就可能會導(dǎo)致性能的降低。

與其他非標(biāo)準(zhǔn)的-X選項(xiàng)一樣,-Xquickstart選項(xiàng)的實(shí)現(xiàn)和存在都可能不加通知就會修改。

可以減小MMI上限計數(shù)器,從而加速JIT編譯一個方法的過程;或者增大它以達(dá)到相反的效果。這是通過使用一個環(huán)境變量IBM_MIXED_MODE_THRESHOLD實(shí)現(xiàn)的,與其他環(huán)境變量一樣,需要在運(yùn)行JVM進(jìn)程的shell實(shí)例中進(jìn)行設(shè)置。自然,這個變量是在啟動JVM進(jìn)程之前設(shè)置的,對于在JVM中執(zhí)行的所有方法都是有效的。

將IBM_MIXED_MODE_THRESHOLD設(shè)置為0可以禁用MMI,這樣,所有的方法在***加載到JVM中時就可以立即使用JIT進(jìn)行編譯。

IBMJVM運(yùn)行時模式如下:

◆MMI和JIT都啟用

這是默認(rèn)的IBMJVM設(shè)置。

◆MMI禁用,JIT啟用

所有的方法都是在***運(yùn)行之前編譯的,即JVM的啟動時間可能會很慢,但是后來的性能會很好。

◆MMI和JIT都禁用

JVM是一個純解釋系統(tǒng)。所有的代碼都不會進(jìn)行編譯。禁用JIT同時還會自動禁用MMI,并將IBM_MIXED_MODE_THRESHOLD設(shè)置為0,這樣可以有效地禁用MMI,但是不會禁用JIT。

MMI是一個非常有效的解釋器,利用宿主平臺上的程序集代碼來達(dá)到***的優(yōu)化。雖然JIT并不是JVM的一個集成部分,但卻以一個共享庫(libjitc)的形式提供了,它與MMI緊密地結(jié)合在一起,JIT和MMI是IBMJVM中緊密結(jié)合的兩種技術(shù)。

在JavaHotSpotVM或經(jīng)典的JIT模式中使用的是SunJVM1.3.1,Sun的JIT實(shí)現(xiàn)并不與IBM的JIT完全相同;SunHotSpotJVM1.4.1中根本沒有JIT。當(dāng)將Java程序從SunJVM1.3.1或SunJVM1.4.1遷移到IBMJVM上時,在一些非常罕見的情況中可能會出現(xiàn)問題,問題的范圍從性能的下降,到代碼會產(chǎn)生不正確的結(jié)果,以及JVM的掛起、崩潰和出現(xiàn)一些異常。

【編輯推薦】

  1. JVM基礎(chǔ):深入學(xué)習(xí)JVM堆與JVM棧
  2. JVM安裝與Tomcat配置具體步驟
  3. 巧解Tomcat中JVM內(nèi)存溢出問題
  4. 新一代JVM垃圾回收算法出爐
  5. 揭露JDK,JRE,JVM三者不為人知的隱情

 

責(zé)任編輯:佚名 來源: ibm.com
相關(guān)推薦

2010-09-27 15:26:17

JVM for Lin

2010-09-27 14:20:00

JITJVM

2010-09-26 14:01:10

JVM Log

2024-11-27 16:25:54

JVMJIT編譯機(jī)制

2016-12-28 10:34:58

2010-09-25 15:33:19

JVM垃圾回收

2010-09-25 11:13:18

JVMClassLoader

2011-07-28 10:38:35

域控制器

2009-06-22 15:39:00

java技術(shù)簡介

2012-03-21 10:10:57

虛擬化網(wǎng)絡(luò)診斷

2009-04-03 11:02:00

VPN故障

2011-11-04 12:56:55

無線USB

2010-08-03 13:41:22

路由器命令

2013-08-19 09:53:01

系統(tǒng)監(jiān)控lsof 監(jiān)控工具

2024-12-17 07:41:34

Java逃逸分析

2013-09-27 13:53:35

X-speed銳捷WiFi

2013-09-27 13:49:18

802.11ac5G WiFi WiFi

2011-11-08 21:27:57

網(wǎng)絡(luò)監(jiān)控服務(wù)器監(jiān)控

2010-06-30 09:34:44

UML建模技術(shù)

2009-09-24 08:48:54

Hibernate技術(shù)
點(diǎn)贊
收藏

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