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