JVM的小問題-創(chuàng)新互聯(lián)

什么是JVM

JVM是java程序運行的底層平臺,與Java支持庫一起構(gòu)成了Java程序的執(zhí)行環(huán)境

創(chuàng)新互聯(lián)建站專注于長興企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,成都做商城網(wǎng)站。長興網(wǎng)站建設(shè)公司,為長興等地區(qū)提供建站服務(wù)。全流程專業(yè)公司,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

JVM虛擬機(jī)就是指能執(zhí)行標(biāo)準(zhǔn)Java字節(jié)碼的虛擬計算機(jī)

JDK與JVM的區(qū)別

JDK中包含JRE,JRE中包含JVM

JDK=JRE+開發(fā)調(diào)試診斷工具,JRE=JVM+Java標(biāo)準(zhǔn)庫

JVM廠商

Oracle,IBM,阿里巴巴,亞馬遜,Red Hat,Adopt OpenJDK

OracleJDK與OpenJDK有什么區(qū)別?

各種版本的JDK一般來說都會符合Java虛擬機(jī)規(guī)范。

兩者的區(qū)別一般來說包括:

兩種JDK提供的工具套件略有差別,比如jmc等有版權(quán)的工具。

某些協(xié)議或配置不一樣,比如美國限制出口的加密算法。

其他細(xì)微差別,比如JRE中某些私有的API不一樣。

Java最受歡迎的長期維護(hù)版本是Java8和Java11

Java8是經(jīng)典LTS版本,性能優(yōu)秀,系統(tǒng)穩(wěn)定,良好支持各種CPU架構(gòu)和操作系

統(tǒng)平臺。

Java11是新的長期支持版,性能更強(qiáng),支持更多新特性,而且經(jīng)過幾年的維護(hù)已經(jīng)很穩(wěn)定。

一般來說。 測試環(huán)境、預(yù)上線環(huán)境的JDK配置需要和生產(chǎn)環(huán)境一致。

Java字節(jié)碼

Java源代碼編譯后的中間代碼格式

字節(jié)碼文件中包含哪些內(nèi)容

版本號信息靜態(tài)常量池(符號常量)

類相關(guān)的信息

字段相關(guān)的信息

方法相關(guān)的信息

調(diào)試相關(guān)的信息

什么是常量

常量是指不變的量,字母 ‘K’ 或者數(shù)字 1024 在UTF8編碼中對應(yīng)到對應(yīng)的二進(jìn)制格式都是不變的。同樣地,字符串在Java中的二進(jìn)制表示也是不變的, 比如 “KK” 。在Java中需要注意的是, final 關(guān)鍵字修飾的字段和變量,表示最終變量,只能賦值1次,不允許再次修改,由編譯器和執(zhí)行引擎共同保證

怎么理解常量池

在Java中,常量池包括兩層含義:

靜態(tài)常量池,class文件中的一個部分,里面保存的是類相關(guān)的各種符號常量。

運行時常量池, 其內(nèi)容主要由靜態(tài)常量池解析得到,但也可以由程序添加。

JVM運行時數(shù)據(jù)區(qū)有哪些

程序計數(shù)器 ,Java虛擬機(jī)棧,堆內(nèi)存,方法區(qū),運行時常量池,本地方法棧

什么是堆內(nèi)存

堆內(nèi)存是指由程序代碼自由分配的內(nèi)存,與棧內(nèi)存做區(qū)分

在Java中,堆內(nèi)存主要用于分配對象的存儲空間,只要拿到對象引用,所有的線程都可以訪問堆內(nèi)存

堆內(nèi)存包括哪些部分

新生代,老年代,存活區(qū),新生代和存活區(qū)一般稱為年輕代

什么是非堆內(nèi)存

除堆內(nèi)存外,JVM的內(nèi)存池還存儲非堆(NON_HEAP),對應(yīng)于JVM規(guī)范中的方法區(qū)

什么是內(nèi)存溢出

內(nèi)存溢出是指可用內(nèi)存不足

程序運行需要使用的內(nèi)存超過大可用值,如果不進(jìn)行處理就會影響其他進(jìn)程,所以現(xiàn)在的操作系統(tǒng)的處理辦法是:只要超出立即報錯

就像杯子里的水,滿了就要溢出來

什么是內(nèi)存泄露

內(nèi)存泄漏是指本來無用的對象卻繼續(xù)占用內(nèi)存,沒有在恰當(dāng)?shù)臅r機(jī)釋放占用的內(nèi)存

不使用的內(nèi)存,卻沒有釋放,稱為內(nèi)存泄漏,也就是該釋放的沒釋放,該回收的沒回收

例子:每一個請求進(jìn)來,或者每進(jìn)行一次操作處理,都分配了內(nèi)存,卻有一部分不能回收(或未釋放),那么隨著處理的請求越來越多,內(nèi)存泄漏也就越來越嚴(yán)重

在Java中一般是指無用的對象卻因為錯誤的引用關(guān)系,不能被GC回收

內(nèi)存泄漏與內(nèi)存溢出的關(guān)系

如果存在嚴(yán)重的內(nèi)存泄漏問題,隨著時間的推移,必然會造成內(nèi)存溢出

內(nèi)存泄漏一般是資源管理問題和程序BUG,內(nèi)存溢出則是內(nèi)存空間不足和內(nèi)存泄漏的最終結(jié)果

給定一個具體的類,計算對象的內(nèi)存占用

對象頭占用12字節(jié)。

每個long類型的字段占用8字節(jié),3個long字段占用24字節(jié)。

byte 字段占用1個字節(jié)。

以上合計 37字節(jié),加上以8字節(jié)對齊,則實際占用45個字節(jié)。

對象頭中包含哪些部分

標(biāo)記字,占用一個機(jī)器字(1位),也就是8字節(jié)

類型指針,占用一個機(jī)器字

在堆內(nèi)存小于32GB,JVM會默認(rèn)開啟指針壓縮,則只占用4個字節(jié)

如果是數(shù)組,對象頭中還會多出一部分,數(shù)組長度,int值,占用4個字節(jié)

常用的JVM啟動參數(shù)有哪些
# JVM啟動參數(shù)不換行
# 設(shè)置堆內(nèi)存
‐Xmx4g ‐Xms4g
# 指定GC算法
‐XX:+UseG1GC ‐XX:MaxGCPauseMillis=50
# 指定GC并行線程數(shù)
‐XX:ParallelGCThreads=4
# 打印GC日志
‐XX:+PrintGCDetails ‐XX:+PrintGCDateStamps
# 指定GC日志文件
‐Xloggc:gc.log
# 指定Meta區(qū)的大值
‐XX:MaxMetaspaceSize=2g
# 設(shè)置單個線程棧的大小
‐Xss1m
# 指定堆內(nèi)存溢出時自動進(jìn)行Dump
‐XX:+HeapDumpOnOutOfMemoryError
‐XX:HeapDumpPath=/usr/local/

還有一些常用的屬性配置:

# 指定默認(rèn)的連接超時時間
‐Dsun.net.client.defaultConnectTimeout=2000
‐Dsun.net.client.defaultReadTimeout=2000
# 指定時區(qū)
‐Duser.timezone=GMT+08
# 設(shè)置默認(rèn)的文件編碼為UTF‐8
‐Dfile.encoding=UTF‐8
# 指定隨機(jī)數(shù)熵源(Entropy Source)
‐Djava.security.egd=file:/dev/./urandom
設(shè)置堆內(nèi)存Xmx應(yīng)該考慮哪些因素?

需要根據(jù)系統(tǒng)得配置來確定,要給操作系統(tǒng)和JVM本身留下一定得剩余空間,推薦配置系統(tǒng)或容器里可用內(nèi)存得70~80%最好

假設(shè)物理內(nèi)存是8G,設(shè)置多大堆內(nèi)存比較合適

比如說系統(tǒng)有8G物理內(nèi)存,系統(tǒng)自己可能會用掉一點,大概還有7.5G可用,那么建議配置-Xml6g

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前名稱:JVM的小問題-創(chuàng)新互聯(lián)
本文來源:http://muchs.cn/article38/dheepp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、網(wǎng)站改版虛擬主機(jī)、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化