jvm調(diào)優(yōu)從哪幾個方面 一般的Java項目需要JVM調(diào)優(yōu)嗎?注意哪些?
一般的Java項目需要JVM調(diào)優(yōu)嗎?注意哪些?Java因其開源、高效、跨平臺、生態(tài)好的特性使得它成為當前主流的編程開發(fā)語言,即使之前使用其它技術(shù)棧的公司現(xiàn)在也慢慢向Java平臺遷移。相信很多Java同
一般的Java項目需要JVM調(diào)優(yōu)嗎?注意哪些?
Java因其開源、高效、跨平臺、生態(tài)好的特性使得它成為當前主流的編程開發(fā)語言,即使之前使用其它技術(shù)棧的公司現(xiàn)在也慢慢向Java平臺遷移。相信很多Java同學(xué)在面試時都會被問到JVM調(diào)優(yōu)之類的問題,但似乎感覺日常工作中又很少進行JVM調(diào)優(yōu),那對于一般的Java項目到底要不要進行JVM調(diào)優(yōu)呢?
什么是JVM調(diào)優(yōu)?
在說JVM調(diào)優(yōu)前,我們得先說說JVM。什么是JVM呢?JVM其實是Java虛擬機(Java Virtual Machine)的簡稱,Java之所以能跨平臺,其實靠的就是JVM。
JVM它是一個虛擬機,雖然JVM本身上是一個計算機程序,但它也有自己的一整套軟硬件環(huán)境。
就好比你新買來了一臺電腦,裝好了系統(tǒng)后,你能正常使用電腦了。但很多用戶是需要對電腦進行一些定制化設(shè)置的,比如桌面背景等。同樣,JVM在安裝后,即使不進行任何額外設(shè)置也能正常工作,但在某些場景下同樣需要對JVM進行一些調(diào)優(yōu),而調(diào)優(yōu)的手段就是更改JVM參數(shù)。
JVM調(diào)優(yōu)的目的及調(diào)優(yōu)項
1、JVM調(diào)優(yōu)的目的
JVM調(diào)優(yōu)的目的就是:盡可能使用較小的內(nèi)存和CPU來讓Java程序獲得更高的吞吐量及較低的延遲。
2、JVM常見調(diào)優(yōu)項
JVM最為常見的調(diào)優(yōu)就是更改JVM默認的參數(shù),比如:
初始堆大?。?Xms
最大堆大?。?Xmx
新生代大?。?Xmn
永生代最小值:-XX:PermSize
永生代最大值:-XX:MaxPermSize
一般項目到底要不要進行JVM調(diào)優(yōu)?
其實JVM默認的設(shè)置是能滿足常規(guī)項目需要的,看上去JVM調(diào)優(yōu)只要改改參數(shù)什么的很簡單,其實并非我們所想的那么簡單。
JVM調(diào)優(yōu)如果調(diào)整得不好反而會影響整個項目的穩(wěn)定,正常情況下不建議大家對JVM進行調(diào)優(yōu),除非你的Java項目內(nèi)存占用過高而你的服務(wù)器內(nèi)存過低時。
Net Core已經(jīng)開源好幾年了, 為什么不像JVM那樣很多人研究和調(diào)優(yōu)其GC算法?
我們已經(jīng)上線了好幾個.net core的項目,基本上都是docker .net core 2/3。說實話,
.net core的GC非常的優(yōu)秀,基本上不需要像做Java時候,還要做很多的優(yōu)化。因此沒有多少人研究很正常。換句話,如果一個GC還要做很多優(yōu)化,這肯定不是好的一個GC。當然平時編程的時候,常用的非托管的對象處理等等還是要必須掌握的。
為什么程序員不去《非你莫屬》求職?
首先,非你莫屬是一個綜藝節(jié)目。他更多的是娛樂性。如果程序員去面試,問了一大推技術(shù)問題,就拿java來說,jvm性能調(diào)優(yōu),讓面試的程序猿巴拉巴拉講一大堆,可以明見的是,氣氛很尷尬,因為大家都不明了。
其次,就是一個比較敏感的了。薪資!北上廣深等特大城市,程序猿的薪資還是蠻高的。然后大家看到非你莫屬中,絕大部分給的薪資在3k-10k之間,相對而言,這個薪資水平只是程序猿的初級水平。
最后,程序猿嘛,能動手絕不動嘴了,哈哈。