官术网_书友最值得收藏!

第1章 導(dǎo)論

本書討論Java性能優(yōu)化的藝術(shù)與科學(xué)。

Java性能優(yōu)化是一門科學(xué),這樣說并不令人驚訝:關(guān)于性能的討論包含大量數(shù)字、評測和分析。大部分性能優(yōu)化工程師擁有科學(xué)類的學(xué)科背景,而且實(shí)現(xiàn)最佳性能的關(guān)鍵就是嚴(yán)謹(jǐn)?shù)剡\(yùn)用科學(xué)方法。

那么Java性能優(yōu)化是藝術(shù)嗎?性能優(yōu)化既是一門科學(xué),又是一門藝術(shù),這種說法并不新鮮,但是我們在討論性能時(shí)很少明確地承認(rèn)這一點(diǎn)。部分原因是“藝術(shù)”的概念與我們的調(diào)試過程相悖。對于一些人來說,看起來是藝術(shù)的東西,基本上都基于豐富的知識和經(jīng)驗(yàn)。而足夠先進(jìn)的技術(shù)和魔法無異,就像對于圓桌騎士來說,手機(jī)真的擁有魔法。同理,優(yōu)秀的性能優(yōu)化工程師的工作成果猶如藝術(shù)作品,只不過這些藝術(shù)作品源于淵博的知識、豐富的經(jīng)驗(yàn)和敏銳的直覺。

本書不能在經(jīng)驗(yàn)和直覺方面提供幫助,但是可以幫助你積累豐富的知識。積年累月地使用這些知識,能幫助你獲得優(yōu)秀Java性能優(yōu)化工程師的必備技能。本書的目標(biāo)是讓你深入理解Java平臺的性能。

這些知識分為兩大部分。第一部分關(guān)于Java虛擬機(jī)(Java Virtual Machine,JVM)的性能優(yōu)化,即如何通過JVM的配置方式影響程序的性能。使用其他語言的資深開發(fā)人員可能認(rèn)為JVM優(yōu)化有點(diǎn)令人厭煩,但實(shí)際上,JVM優(yōu)化類似于C++程序員在編譯階段測試和挑選編譯器參數(shù),或者PHP程序員在php.ini文件中設(shè)置合適的變量。

第二部分關(guān)于理解Java平臺的特性如何影響性能。注意,這里使用了平臺這個(gè)詞:有些平臺特性(比如線程和同步)是Java語言的一部分,而有些平臺特性(比如字符串處理)是Java標(biāo)準(zhǔn)API的一部分。盡管Java語言和Java API有著顯著的區(qū)別,但在本書中,兩者會被同等對待。這兩方面在本書中都會講到。

JVM的性能主要取決于標(biāo)志優(yōu)化,而平臺的性能更多地取決于是否在代碼中應(yīng)用了最佳實(shí)踐。一直以來,開發(fā)人員只負(fù)責(zé)編寫代碼,性能優(yōu)化組只負(fù)責(zé)測試并提出性能優(yōu)化建議,這兩方面被認(rèn)為是獨(dú)立的專業(yè)領(lǐng)域。這種區(qū)分從來就不太有用,因?yàn)槿魏问褂肑ava工作的人都應(yīng)該理解代碼在JVM中的行為,也應(yīng)該知道什么樣的優(yōu)化有助于提升性能。當(dāng)項(xiàng)目轉(zhuǎn)向DevOps模式后,這種區(qū)分開始變得模糊。只有全面掌握領(lǐng)域內(nèi)的知識,才能讓你的作品更具藝術(shù)氣息。

主站蜘蛛池模板: 星座| 乌恰县| 商河县| 富平县| 开阳县| 南开区| 大同县| 建平县| 麦盖提县| 乌鲁木齐市| 麦盖提县| 轮台县| 七台河市| 永和县| 馆陶县| 枣阳市| 奉化市| 灵台县| 柞水县| 崇阳县| 马鞍山市| 马鞍山市| 玛多县| 武胜县| 宜春市| 东乡| 南昌市| 绿春县| 光山县| 托里县| 阿鲁科尔沁旗| 京山县| 建始县| 双桥区| 紫阳县| 白山市| 盘锦市| 东山县| 汨罗市| 襄城县| 咸宁市|