成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學(xué)習(xí)JVM參數(shù)前你需要了解些什么

開發(fā) 開發(fā)工具 虛擬化
大家照相通常使用手機(jī)就夠用了,但是針對發(fā)燒友來說會(huì)使用更專業(yè)的設(shè)備,比如單反相機(jī),在單反里有好幾個(gè)模式,P/A/S/M,其中P是傻瓜模式,程序會(huì)自動(dòng)根據(jù)環(huán)境設(shè)置快門速度和光圈大小,以得到相對合適的曝光效果。

[[323264]]

JVM參數(shù)是什么

大家照相通常使用手機(jī)就夠用了,但是針對發(fā)燒友來說會(huì)使用更專業(yè)的設(shè)備,比如單反相機(jī),在單反里有好幾個(gè)模式,P/A/S/M,其中P是傻瓜模式,程序會(huì)自動(dòng)根據(jù)環(huán)境設(shè)置快門速度和光圈大小,以得到相對合適的曝光效果。A檔是光圈優(yōu)先,用戶可以自己設(shè)置光圈大小,快門速度等都交給相機(jī)程序來決定,類似半自動(dòng)化的模式。S檔是快門優(yōu)先模式,和A檔類似,只是用戶可以設(shè)置快門速度。最后一個(gè)模式是M檔,這是純手動(dòng)模式,由用戶自己來調(diào)整快門速度,光圈大小等,這個(gè)對人的要求就會(huì)很高,但是很多專家往往都會(huì)選擇M檔來拍攝自己的作品。

可以把JVM想象成相機(jī),JVM參數(shù)想象成光圈大小,快門速度之類的參數(shù)值,這些參數(shù)對程序的運(yùn)行會(huì)影響挺大。

java程序跑在JVM上,JVM會(huì)根據(jù)環(huán)境自動(dòng)設(shè)置一些JVM參數(shù),但是這些參數(shù)并不能保證一定是最優(yōu)的,有些參數(shù)在啟動(dòng)的時(shí)候就基本設(shè)置好了,它們在運(yùn)行的時(shí)候還無法調(diào)整。為了讓JVM能更好地運(yùn)行你的程序,還是有必要對JVM參數(shù)有一定的理解,知道這些JVM參數(shù)分別在什么場景下有效果,起到什么作用,比如我們到底期不期望類可以卸載,是否可以在運(yùn)行的時(shí)候打印一些日志協(xié)助我們了解JVM的運(yùn)行情況,出問題的時(shí)候是否可以自動(dòng)給我們做一些現(xiàn)場數(shù)據(jù)的保留等,這些都是可以通過JVM參數(shù)來設(shè)置的。

JVM參數(shù)有多少

相機(jī)調(diào)整的無非就那么幾個(gè)參數(shù)值,那JVM參數(shù)到底有多少個(gè)呢,大概有1000多個(gè),是不是讓你很震驚,沒錯(cuò),確實(shí)有這么多。

大家可以到 PerfMa社區(qū) 去看看所有這些JVM參數(shù)(注:這是PerfMa社區(qū)專門為大家分享JVM參數(shù)經(jīng)驗(yàn)的討論區(qū)),當(dāng)然我們不一定非得對每個(gè)JVM參數(shù)要了解清楚,但是對一些常見的,有助于性能調(diào)優(yōu)的JVM參數(shù)還是有必要了解一下的。

 

JVM參數(shù)通常設(shè)置的位置

我們啟動(dòng)一個(gè)java程序很簡單,命令類似如下

  1. java Main 

我們都知道上面的Main是程序的啟動(dòng)類,JVM執(zhí)行的時(shí)候會(huì)找到這個(gè)Main類里的如下簽名的函數(shù)

  1. Public static void main(String args[]) 

那這里函數(shù)的參數(shù)args怎么傳進(jìn)來的呢?我們通過在啟動(dòng)命令的主類后面加上相關(guān)的參數(shù),參數(shù)之間用空格分開,JVM會(huì)自動(dòng)將這些參數(shù)作為args的組成部分傳進(jìn)來,比如

  1. java Main arg1 arg2 

這樣,args這個(gè)數(shù)組里自動(dòng)會(huì)填充arg1和arg2兩個(gè)元素,這樣在你的程序里就可以使用這些參數(shù)了

我們把a(bǔ)rg1和arg2這些叫做程序參數(shù),但是和我們課程相關(guān)的并不是程序參數(shù),而是JVM參數(shù),那JVM參數(shù)放到哪里呢?JVM參數(shù)都是放在主類之前,java命令之后,比如

  1. java -Xmx100M Main arg1 arg2 

這里的-Xmx100M其實(shí)就是JVM參數(shù),所以所有的JVM參數(shù)都是放在這個(gè)位置的,如果不是這個(gè)位置,那你設(shè)置的JVM參數(shù)將會(huì)是無效的,如果參數(shù)出現(xiàn)不符合預(yù)期的情況,那請第一時(shí)間檢查的是你JVM參數(shù)設(shè)置的位置,當(dāng)然還可能存在一些別的原因?qū)е翵VM參數(shù)和你設(shè)置的情況可能不一致的情況

JVM參數(shù)的寫法

那JVM參數(shù)具體怎么寫呢,可以有好幾種

  • “-X” 開頭的,比如-Xmx100M
  • “-XX: ” 開頭的,比如-XX:+UseG1GC
  • “-” 開頭的,比如-verbose:gc

其中-X和-開頭的通常會(huì)被轉(zhuǎn)換為一個(gè)或者多個(gè)-XX:開頭的參數(shù),只是一個(gè)簡化的寫法,比如說-Xmx100M,JVM里會(huì)自動(dòng)轉(zhuǎn)化為-XX:MaxHeapSize=100M,-verbose:class會(huì)自動(dòng)轉(zhuǎn)換為-XX:+TraceClassLoading -XX:+TraceClassUnloading

通過Flags參數(shù)指定JVM參數(shù)文件

如果JVM參數(shù)都和源碼伴著一起發(fā)布的話,如果僅僅修改JVM參數(shù)也必須拉個(gè)分支提交代碼,這不是很友好,有什么好辦法呢?

我們可以在啟動(dòng)參數(shù)里設(shè)置一個(gè)參數(shù)就好,這個(gè)參數(shù)類似如下

  1. java -XX:Flags=/home/admin/flags Main arg1 arg2 

設(shè)置過這個(gè)參數(shù)之后,我們只要在服務(wù)的/home/admin目錄下創(chuàng)建flags文件,同時(shí)在這個(gè)文件里指定所有的JVM參數(shù)就可以了,但是對flags文件里的參數(shù)寫法會(huì)有些要求,-X之類的參數(shù)不能設(shè)置,但是可以用其等價(jià)的-XX的參數(shù)來替代,比如說-Xmx100M,只能用-XX:MaxHeapSize=100M來取代,同時(shí)在文件里不要出現(xiàn)-XX:,只要key=value或許+/-key就可以了,不同的參數(shù)之間用換行或者空格分開即可,比如flags文件的內(nèi)容如下:

  1. MaxHeapSize=8G +UseG1GC 

其實(shí)等價(jià)于

  1. -Xmx8G -XX:+UseG1GC 

可以通過加上-XX:+PrintVMOptions可以打印設(shè)置過的JVM參數(shù)來驗(yàn)證,比如

  1. java -XX:Flags=/home/admin/flags -XX:+PrintVMOptions Main arg1 arg2 

通過VMOptionsFile參數(shù)來指定JVM參數(shù)文件

使用上面的Flags參數(shù)可能會(huì)比較別扭,因?yàn)樵O(shè)置參數(shù)和我們正常的寫法不太一樣,如果我們的JDK版本大于1.8的話,JVM提供了一個(gè)更人性化的參數(shù),那就是VMOptionsFile來取代Flags,這也是指定一個(gè)文件,這個(gè)文件里的JVM參的寫法和我們在java命令后寫的JVM參數(shù)寫法完全一樣

  1. java -XX:VMOptionsFile=/home/admin/flags Main arg1 arg2 

在flags文件里我們可以這么寫

  1. -Xmx8G -XX:+UseG1GC 

是不是方便了很多呢?

【本文是51CTO專欄作者李嘉鵬的原創(chuàng)文章,轉(zhuǎn)載請通過微信公眾號(hào)(你假笨,id:lovestblog)聯(lián)系作者本人獲取授權(quán)】

 

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2010-04-30 10:05:31

企業(yè)級(jí)Linux

2020-11-17 08:00:00

機(jī)器學(xué)習(xí)管道IT

2022-07-29 09:17:46

JavaScriptReactJS學(xué)習(xí)

2012-06-26 10:13:55

2011-04-01 11:16:06

hessian

2012-06-27 09:11:47

2022-06-08 08:03:51

React.jsReactJS 庫

2018-08-23 10:17:09

2011-12-14 16:43:54

javanio

2016-11-01 16:41:08

直通網(wǎng)線連接端口傳輸數(shù)據(jù)

2020-10-13 06:56:19

JavaScript異常類型開發(fā)

2022-10-26 07:21:15

網(wǎng)絡(luò)視頻開發(fā)

2015-12-23 10:00:04

多種編程語言

2022-01-04 19:28:05

VMware云端虛擬化

2015-09-17 09:36:46

Chrome改變

2018-04-10 09:59:44

GoogleJS代碼規(guī)范

2022-10-27 10:29:15

2021-08-06 06:51:15

TypeScript Any 類型

2022-08-15 06:53:22

網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2019-11-11 09:24:37

戴爾
點(diǎn)贊
收藏

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

主站蜘蛛池模板: www.日韩 | 久久久久精 | 日本不卡一区 | 91精品久久久久久久久中文字幕 | 做a的各种视频 | 午夜精品一区二区三区在线观看 | 伊人免费在线 | 久久久999国产精品 中文字幕在线精品 | 91视频在线| 国产一区二区三区免费 | 天天干夜夜操视频 | 毛片一级片| 亚洲国产成人在线视频 | 日韩性在线 | 精品久久久久久亚洲精品 | 岛国av一区二区三区 | 久久精品99国产精品日本 | 伊人啪啪网 | 国产传媒在线播放 | 91久久综合亚洲鲁鲁五月天 | 青青草网 | 懂色中文一区二区三区在线视频 | 波多野结衣先锋影音 | 日韩在线一区二区 | 男女羞羞视频免费看 | 亚洲欧美一区二区三区1000 | 国产精品亚洲第一 | 国产欧美在线播放 | 欧美成人精品 | 国产精品乱码一区二区三区 | 国产免费一区二区三区 | 欧美成人自拍视频 | 亚洲免费视频在线观看 | 亚洲精品专区 | 成人在线亚洲 | 亚洲a在线视频 | 中文在线观看视频 | 91精品国模一区二区三区 | 91精品国产综合久久福利软件 | 欧美亚洲在线 | 国产美女精品视频免费观看 |