国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java編譯器優化方法簡介

開發 后端
Java應用程序的編譯過程與靜態編譯語言(例如C或C++)不同,Java編譯器把Java源代碼轉換成可移植的JVM字節碼,這里向大家描述一下Java編譯器優化的概念。

你對Java編譯器優化的概念和方法是否熟悉,這里和大家分享一下,Java應用程序的編譯過程與靜態編譯語言(例如C或C++)不同。靜態編譯器直接把源代碼轉換成可以直接在目標平臺上執行的機器代碼,不同的硬件平臺要求不同的編譯器。Java編譯器把Java源代碼轉換成可移植的JVM字節碼。

兩條編碼準則與Java編譯器

我們在寫代碼時,常常會提到兩條原則:

1、方法要盡量短,大方法要分解成小方法;

2、不要重復發明輪子。

我們在強調這兩個原則的時候,往往只關注的是代碼簡潔、易維護等方便我們人的因素,其實這樣做還可以大大方便Java編譯器優化代碼。

Java編譯器優化簡介:

Java應用程序的編譯過程與靜態編譯語言(例如C或C++)不同。靜態編譯器直接把源代碼轉換成可以直接在目標平臺上執行的機器代碼,不同的硬件平臺要求不同的編譯器。Java編譯器把Java源代碼轉換成可移植的JVM字節碼。與靜態編譯器不同,Javac幾乎不做什么優化,在靜態編譯語言中應當由編譯器進行的優化工作,在Java中是在程序執行的時候,由運行時執行優化。

即時編譯

對于證實概念的實現來說,解釋是合適的,但是早期的JVM由于太慢。下一代JVM使用即時(JIT)編譯器來提高執行速度。按照嚴格的定義,基于JIT的虛擬機在執行之前,把所有字節碼轉換成機器碼,但是以惰性方式來做這項工作:JIT只有在確定某個代碼路徑將要執行的時候,才編譯這個代碼路徑(因此有了名稱“即時編譯”)。這個技術使程序能啟動得更快,因為在開始執行之前,不需要冗長的編譯階段。
JIT技術看起來很有前途,但是它有一些不足。

JIT消除了解釋的負擔(以額外的啟動成本為代價),但是由于若干原因,代碼的優化等級仍然是一般般。為了避免Java應用程序嚴重的啟動延遲,JIT編譯器必須非常迅速,這意味著它無法把大量時間花在優化上。所以,早期的JIT編譯器在進行內聯假設(inliningassumption)方面比較保守,因為它們不知道后面可能要裝入哪個類。

雖然從技術上講,基于JIT的虛擬機在執行字節碼之前,要先編譯字節碼,但是JIT這個術語通常被用來表示任何把字節碼轉換成機器碼的動態編譯過程——即使那些能夠解釋字節碼的過程也算。

HotSpot動態編譯

HotSpot執行過程組合了編譯、性能分析以及動態編譯。它沒有把所有要執行的字節碼轉換成機器碼,而是先以解釋器的方式運行,只編譯“熱門”代碼——執行得最頻繁的代碼。當HotSpot執行時,會搜集性能分析數據,用來決定哪個代碼段執行得足夠頻繁,值得編譯。只編譯執行最頻繁的代碼有幾項性能優勢:沒有把時間浪費在編譯那些不經常執行的代碼上;這樣,編譯器就可以花更多時間來優化熱門代碼路徑,因為它知道在這上面花的時間物有所值。而且,通過延遲編譯,編譯器可以訪問性能分析數據,并用這些數據來改進優化決策,例如是否需要內聯某個方法調用。

為了讓事情變得更復雜,HotSpot提供了兩個Java編譯器:客戶機編譯器和服務器編譯器。默認采用客戶機編譯器;在啟動JVM時,您可以指定-server開關,選擇服務器編譯器。服務器編譯器針對***峰值操作速度進行了優化,適用于需要長期運行的服務器應用程序??蛻魴C編譯器的優化目標,是減少應用程序的啟動時間和內存消耗,優化的復雜程度遠遠低于服務器編譯器,因此需要的編譯時間也更少。

HotSpot服務器編譯器能夠執行各種樣的類。它能夠執行許多靜態編譯器中常見的標準優化,例如代碼提升(hoisting)、公共的子表達式清除、循環展開(unrolling)、范圍檢測清除、死代碼清除、數據流分析,還有各種在靜態編譯語言中不實用的優化技術,例如虛方法調用的聚合內聯。#p#

持續重新編譯

HotSpot技術另一個有趣的方面是:編譯不是一個全有或者全無(all-or-nothing)的命題。在解釋代碼路徑一定次數之后,會把它重新編譯成機器碼。但是JVM會繼續進行性能分析,而且如果認為代碼路徑特別熱門,或者未來的性能分析數據認為存在額外的優化可能,那么還有可能用更高一級的優化重新編譯代碼。JVM在一個應用程序的執行過程中,可能會把相同的字節碼重新編譯許多次。為了深入了解編譯器做了什么,可以-XX:+PrintCompilation標志調用JVM,這個標志會使編譯器(客戶機或服務器)每次運行的時候打印一條短消息。

棧上(On-stack)替換

HotSpot開始的版本編譯的時候每次編譯一個方法。如果某個方法的累計執行次數超過指定的循環迭代次數(在HotSpot的***版中,是10,000次),那么這個方法就被當作熱門方法,計算的方式是:為每個方法關聯一個計數器,每次執行一個后向分支時,就會遞增計數器一次。但是,在方法編譯之后,方法調用并沒有切換到編譯的版本,需要退出并重新進入方法,后續調用才會使用編譯的版本。結果就是,在某些情況下,可能永遠不會用到編譯的版本,例如對于計算密集型程序,在這類程序中所有的計算都是在方法的一次調用中完成的。重量級方法可能被編譯,但是編譯的代碼永遠用不到。

HotSpot最近的版本采用了稱為棧上(on-stack)替換(OSR)的技術,支持在循環過程中間,從解釋執行切換到編譯的代碼(或者從編譯代碼的一個版本切換到另一個版本)。

從Java編譯、執行優化的原理可以看出,編譯器會將“熱門代碼塊”、“熱門方法”持續優化,以提高性能,再回顧我們常常強調的兩個原則:

1、盡量寫小方法。小方法意味著功能單一、重用性高,自然會被很多地方用到,容易變成“熱門方法”。

2、不重復發明輪子,盡量用已存在的輪子。大家共用一個“輪子”,自然就是“熱門”輪子,Java編譯器會知道這個輪子要好好優化,讓他賺的更快。

【編輯推薦】

  1. Java虛擬機概念及體系結構
  2. 發現Java虛擬機內存泄露問題
  3. 深入Java虛擬機:JVM中的Stack和Heap
  4. Java虛擬機發展回顧 為跨平臺而生
  5. Java虛擬機(JVM)中的內存設置詳解

 

責任編輯:佚名 來源: javaeye.com
相關推薦

2011-05-18 11:06:25

java編譯器

2009-05-05 09:55:10

Javastring對象

2021-10-09 12:08:23

Facebook編譯器機器學習

2022-02-23 13:31:26

RVO編譯器優化

2023-11-15 17:58:58

C++代碼

2010-01-13 17:12:26

C++編譯器

2010-02-23 15:44:24

Python編輯器

2023-04-14 10:40:45

工具編譯器優化

2010-09-16 16:05:24

Java編譯器

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2009-12-11 15:38:40

VS2008編譯器

2017-03-20 18:01:55

編譯器匯編

2009-08-10 17:12:54

C#編譯器

2013-03-29 10:02:37

編譯器語言編譯開發

2010-03-23 11:17:16

Python 動態編譯

2023-03-26 20:39:01

2022-08-02 08:11:41

監控埋點埋點方式插樁

2010-10-20 13:43:37

C++編譯器

2019-08-06 08:20:07

編譯器工具開發者
點贊
收藏

51CTO技術棧公眾號

最新亚洲视频| 久久99国产精品尤物| 久久久久成人精品| 伊人久久国产| 亚洲色图13p| 精品日本视频| 久久久久久国产三级电影| 久久中文资源| 国产剧情日韩欧美| 99综合在线| 成年在线观看视频| 中文字幕精品一区| 香蕉视频在线观看免费| 欧美在线观看一二区| 黄页网站在线| 中文字幕亚洲激情| 1769国产精品视频| 亚洲综合自拍一区| 激情五月婷婷综合| 嫩草影院在线观看网站成人| 日韩欧美在线网址| 国产夫妻在线播放| 欧美激情第三页| 99精品小视频| 亚洲一区综合| 久久久久久免费网| 国产中文字幕在线观看| 亚洲国产成人一区| 激情av综合| 欧美高清性xxxxhd| 久久精品在这里| 成人在线观看网站| 日韩有码片在线观看| 99久久精品网| 日本一道在线观看| 亚洲图片欧美一区| 成人免费观看在线观看| 57pao成人国产永久免费| 国产精品日韩精品欧美精品| www.日本xxxx| 3d成人h动漫网站入口| 一区二区三区自拍视频| 国产一区在线观| 久久久国产一区二区三区四区小说| 欧美成熟毛茸茸| 久久av最新网址| 色88久久久久高潮综合影院| 精品国产乱码久久久久久久软件 | 国产高清欧美| 黄频视频在线观看| 欧美伊人精品成人久久综合97| 国产劲爆久久| 在线观看av的网址| 香蕉av福利精品导航| 日韩精品成人在线观看| 色女人综合av| 亚洲国产一区视频| 亚洲日本三级| 日韩电影免费在线观看中文字幕| 外国成人在线视频| 三级在线免费观看| 69堂精品视频| 久久国产精品成人免费观看的软件| 国产肥臀一区二区福利视频| 亚洲成人激情在线| 夜久久久久久| 你懂的好爽在线观看| 性色av香蕉一区二区| 国内国产精品久久| 青青青草原在线| 久久久久久久久久码影片| 亚洲人成伊人成综合网小说| 国产一区二区| 在线免费观看av的网站| 日韩精品极品在线观看| 亚洲毛片一区| 快射av在线播放一区| 久久久久久久久久久一区| 欧美色精品在线视频| 国产精品毛片久久| 黄色一级大片在线免费看产| 国产精品精品软件视频| 欧美日韩亚洲成人| 中文字幕无码精品亚洲资源网久久| 中文字幕免费在线观看视频一区| 北岛玲一区二区三区| 国产福利精品视频| 玖玖在线精品| 91九色丨porny丨国产jk| 亚洲网站在线播放| 国产精品久久看| 国产欧美日韩视频一区二区| 亚洲国产激情av| 色在线免费观看| 欧美成人综合一区| 欧美午夜免费电影| 欧美精品色网| 国产人成在线视频| 欧美经典影片视频网站| 天天综合网日韩| 国产一区二中文字幕在线看| 日韩精品免费在线观看| 男人的天堂亚洲在线| 亚洲精品.com| 国内外成人免费在线视频| 91免费综合在线| 97超碰人人爱| 综合欧美国产视频二区| 91女神在线视频| 动漫视频在线一区| 日本免费高清视频| 亚洲最大福利视频网| 日本视频一区二区| av高清久久久| 黄色资源网久久资源365| 日韩欧美不卡| 99久久999| 国产精品久久久久高潮| 一区二区三区中文免费| 成人情趣视频网站| 国产综合在线观看| 国产精品va在线观看视色| 日本1区2区| 男人搞女人网站| 国产精品一区二区三区在线| 色综合久综合久久综合久鬼88| 欧美裸体bbwbbwbbw| 欧美激情一区在线观看| 亚洲一区二区三区高清不卡| 精品欠久久久中文字幕加勒比| 国产一区在线播放| 欧美精品久久99久久在免费线| 久久精品国产免费| 中文成人在线| 美女激情网站| 免费一区二区三区| 久久精品国产91精品亚洲| 一区二区三区四区激情| 亚洲欧美日韩精品一区二区| 中文字幕成人| 免费黄色在线视频网站| 国产激情在线看| 国产精品日韩专区| 亚洲精品av在线播放| 中文字幕色av一区二区三区| 黄色亚洲在线| 超碰国产精品一区二页| 尤物视频网站在线观看| 在线视频福利一区| 欧美精品成人91久久久久久久| 欧美日韩亚洲系列| 成人激情视频网站| 中文一区一区三区免费在线观看| 一区二区电影免费观看| 中文在线www| 日韩国产一级片| 91成人在线看| 日韩视频免费大全中文字幕| 日韩欧美主播在线| 国产91综合网| 99免费精品| 精品自拍视频| 日本a级在线| 久久狠狠久久综合桃花| 日本亚洲欧洲精品| 色视频www在线播放| 午夜小视频在线观看| 福利一区视频| 日韩欧美1区| 国产一区二区三区高清播放| 国产欧美视频一区二区| 精品久久久国产精品999| 中文字幕亚洲第一| 国产精品视频在线免费观看| 日韩精品在线免费| 黑人欧美xxxx| 国产丝袜在线精品| 日本午夜一本久久久综合| 国产永久精品大片wwwapp| 中文字幕系列一区| 日本欧美在线视频免费观看| 大香一本蕉伊线亚洲网| 综合久久国产| 91久久极品少妇xxxxⅹ软件| 色综合视频一区中文字幕| 欧美精品一区二区高清在线观看| 一区二区三区精品久久久| 91网站最新网址| 久久69国产一区二区蜜臀| 国产一区二区中文| 国产一卡不卡| 国产精品115| 玖玖精品在线| 中文字幕高清在线播放| 国产美女福利在线| 日韩电影免费| 交换国产精品视频一区| 精品久久久久久中文字幕2017| 国产精品久久久影院| 亚洲视频在线观看日本a|