国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

淺談JVM specification的實(shí)現(xiàn)及其原理

開(kāi)發(fā) 后端
近期看了看Java內(nèi)存泄露的一些案例,跟大家討論了一下,深入研究發(fā)現(xiàn)JVM里面還是有不少以前不知道的細(xì)節(jié),這里稍微剖析一下JVM specification。

JVM主要包括兩個(gè)子系統(tǒng)和兩個(gè)組件。兩個(gè)子系統(tǒng)分別是Class loader子系統(tǒng)和Execution engine(執(zhí)行引擎) 子系統(tǒng);兩個(gè)組件分別是Runtime data area (運(yùn)行時(shí)數(shù)據(jù)區(qū)域)組件和Native interface(本地接口)組件。

Class loader子系統(tǒng)的作用:根據(jù)給定的全限定名類名(如 java.lang.Object)來(lái)裝載class文件的內(nèi)容到 Runtime data area中的method area(方法區(qū)域)。Java程序員可以extends java.lang.ClassLoader類來(lái)寫(xiě)自己的Class loader。

Execution engine子系統(tǒng)的作用:執(zhí)行classes中的指令。任何JVM specification實(shí)現(xiàn)(JDK)的核心都是Execution engine,不同的JDK(JVM specification)例如Sun 的JDK 和IBM的JDK好壞主要就取決于他們各自實(shí)現(xiàn)的Execution  engine的好壞。

Native interface組件:與native libraries交互,是其它編程語(yǔ)言交互的接口。當(dāng)調(diào)用native方法的時(shí)候,就進(jìn)入了一個(gè)全新的并且不再受虛擬機(jī)限制的世界,所以也很容易出現(xiàn)JVM無(wú)法控制的native heap OutOfMemory。

Runtime Data Area組件:這就是我們常說(shuō)的JVM的內(nèi)存了。它主要分為五個(gè)部分——

1、Heap (堆):一個(gè)Java虛擬實(shí)例中只存在一個(gè)堆空間

2、Method Area(方法區(qū)域):被裝載的class的信息存儲(chǔ)在Method area的內(nèi)存中。當(dāng)虛擬機(jī)裝載某個(gè)類型時(shí),它使用類裝載器定位相應(yīng)的class文件,然后讀入這個(gè)class文件內(nèi)容并把它傳輸?shù)教摂M機(jī)中。

3、Java Stack(java的棧):虛擬機(jī)只會(huì)直接對(duì)Java stack執(zhí)行兩種操作:以幀為單位的壓棧或出棧

4、Program Counter(程序計(jì)數(shù)器):每一個(gè)線程都有它自己的PC寄存器,也是該線程啟動(dòng)時(shí)創(chuàng)建的。PC寄存器的內(nèi)容總是指向下一條將被執(zhí)行指令的餓地址,這里的地址可以是一個(gè)本地指針,也可以是在方法區(qū)中相對(duì)應(yīng)于該方法起始指令的偏移量。

5、Native method stack(本地方法棧):保存native方法進(jìn)入?yún)^(qū)域的地址

以上五部分只有Heap 和Method Area是被所有線程的共享使用的;而Java stack, Program counter 和Native method stack是以線程為粒度的,每個(gè)線程獨(dú)自擁有自己的部分。

了解JVM的系統(tǒng)結(jié)構(gòu),再來(lái)看看JVM內(nèi)存回收問(wèn)題了——

Sun的JVM Generational Collecting(垃圾回收)原理是這樣的:把對(duì)象分為年青代(Young)、年老代(Tenured)、持久代(Perm),對(duì)不同生命周期的對(duì)象使用不同的算法。(基于對(duì)對(duì)象生命周期分析)

Java堆中的各代分布。

1. Young(年輕代)

年輕代分三個(gè)區(qū)。一個(gè)Eden區(qū),兩個(gè)Survivor區(qū)。大部分對(duì)象在Eden區(qū)中生成。當(dāng)Eden區(qū)滿時(shí),還存活的對(duì)象將被復(fù)制到Survivor區(qū)(兩個(gè)中的一個(gè)),當(dāng)這個(gè)Survivor區(qū)滿時(shí),此區(qū)的存活對(duì)象將被復(fù)制到另外一個(gè)Survivor區(qū),當(dāng)這個(gè)Survivor去也滿了的時(shí)候,從第一個(gè)Survivor區(qū)復(fù)制過(guò)來(lái)的并且此時(shí)還存活的對(duì)象,將被復(fù)制年老區(qū)(Tenured。需要注意,Survivor的兩個(gè)區(qū)是對(duì)稱的,沒(méi)先后關(guān)系,所以同一個(gè)區(qū)中可能同時(shí)存在從Eden復(fù)制過(guò)來(lái) 對(duì)象,和從前一個(gè)Survivor復(fù)制過(guò)來(lái)的對(duì)象,而復(fù)制到年老區(qū)的只有從第一個(gè)Survivor去過(guò)來(lái)的對(duì)象。而且,Survivor區(qū)總有一個(gè)是空的。

2. Tenured(年老代)

年老代存放從年輕代存活的對(duì)象。一般來(lái)說(shuō)年老代存放的都是生命期較長(zhǎng)的對(duì)象。

3. Perm(持久代)

用于存放靜態(tài)文件,如今Java類、方法等。持久代對(duì)垃圾回收沒(méi)有顯著影響,但是有些應(yīng)用可能動(dòng)態(tài)生成或者調(diào)用一些class,例如Hibernate等,在這種時(shí)候需要設(shè)置一個(gè)比較大的持久代空間來(lái)存放這些運(yùn)行過(guò)程中新增的類。持久代大小通過(guò)-XX:MaxPermSize=進(jìn)行設(shè)置。

舉個(gè)例子:當(dāng)在程序中生成對(duì)象時(shí),正常對(duì)象會(huì)在年輕代中分配空間,如果是過(guò)大的對(duì)象也可能會(huì)直接在年老代生成(據(jù)觀測(cè)在運(yùn)行某程序時(shí)候每次會(huì)生成一個(gè)十兆的空間用收發(fā)消息,這部分內(nèi)存就會(huì)直接在年老代分配)。年輕代在空間被分配完的時(shí)候就會(huì)發(fā)起內(nèi)存回收,大部分內(nèi)存會(huì)被回收,一部分幸存的內(nèi)存會(huì)被拷貝至Survivor的from區(qū),經(jīng)過(guò)多次回收以后如果from區(qū)內(nèi)存也分配完畢,就會(huì)也發(fā)生內(nèi)存回收然后將剩余的對(duì)象拷貝至to區(qū)。等到to區(qū)也滿的時(shí)候,就會(huì)再次發(fā)生內(nèi)存回收然后把幸存的對(duì)象拷貝至年老區(qū)。

通常我們說(shuō)的JVM內(nèi)存回收總是在指堆內(nèi)存回收,確實(shí)只有堆中的內(nèi)容是動(dòng)態(tài)申請(qǐng)分配的,所以以上對(duì)象的年輕代和年老代都是指的JVM的Heap空間,而持久代則是之前提到的Method Area,不屬于Heap。

了解完這些之后,以下的轉(zhuǎn)載一熱衷于鉆研技術(shù)的哥們Richen Wang關(guān)于內(nèi)存管理的一些建議——

1、手動(dòng)將生成的無(wú)用對(duì)象,中間對(duì)象置為null,加快內(nèi)存回收。

2、對(duì)象池技術(shù) 如果生成的對(duì)象是可重用的對(duì)象,只是其中的屬性不同時(shí),可以考慮采用對(duì)象池來(lái)較少對(duì)象的生成。如果有空閑的對(duì)象就從對(duì)象池中取出使用,沒(méi)有再生成新的對(duì)象,大大提高了對(duì)象的復(fù)用率。

3、JVM調(diào)優(yōu) 通過(guò)配置JVM的參數(shù)來(lái)提高垃圾回收的速度,如果在沒(méi)有出現(xiàn)內(nèi)存泄露且上面兩種辦法都不能保證內(nèi)存的回收時(shí),可以考慮采用JVM調(diào)優(yōu)的方式來(lái)解決,不過(guò)一定要經(jīng)過(guò)實(shí)體機(jī)的長(zhǎng)期測(cè)試,因?yàn)椴煌膮?shù)可能引起不同的效果。如-Xnoclassgc參數(shù)等。

推薦的兩款內(nèi)存檢測(cè)工具

1、jconsole  JDK自帶的內(nèi)存監(jiān)測(cè)工具,路徑j(luò)dk bin目錄下jconsole.exe,雙擊可運(yùn)行。連接方式有兩種,第一種是本地方式如調(diào)試時(shí)運(yùn)行的進(jìn)程可以直接連,第二種是遠(yuǎn)程方式,可以連接以服務(wù)形式啟動(dòng)的進(jìn)程。遠(yuǎn)程連接方式是:在目標(biāo)進(jìn)程的jvm啟動(dòng)參數(shù)中添加-Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false  1090是監(jiān)聽(tīng)的端口號(hào)具體使用時(shí)要進(jìn)行修改,然后使用IP加端口號(hào)連接即可。通過(guò)該工具可以監(jiān)測(cè)到當(dāng)時(shí)內(nèi)存的大小,CPU的使用量以及類的加載,還提供了手動(dòng)gc的功能。優(yōu)點(diǎn)是效率高,速度快,在不影響進(jìn)行運(yùn)行的情況下監(jiān)測(cè)產(chǎn)品的運(yùn)行。缺點(diǎn)是無(wú)法看到類或者對(duì)象之類的具體信息。使用方式很簡(jiǎn)單點(diǎn)擊幾下就可以知道功能如何了,確實(shí)有不明白之處可以上網(wǎng)查詢文檔。

2、JProfiler 收費(fèi)的工具,但是到處都有破解辦法。安裝好以后按照配置調(diào)試的方式配置好一個(gè)本地的session即可運(yùn)行。可以監(jiān)測(cè)當(dāng)時(shí)的內(nèi)存、CPU、線程等,能具體的列出內(nèi)存的占用情況,還可以就某個(gè)類進(jìn)行分析。優(yōu)點(diǎn)很多,缺點(diǎn)太影響速度,而且有的類可能無(wú)法被織入方法,例如我使用jprofiler時(shí)一直沒(méi)有備份成功過(guò),總會(huì)有一些類的錯(cuò)誤。

JVM specification的實(shí)現(xiàn)及其原理就介紹到這里。

【編輯推薦】

  1. 詳解Linux系統(tǒng)中JVM內(nèi)存2GB上限
  2. 高手教大家如何配置JVM參數(shù)
  3. JDK、JRE、JVM之間的關(guān)系
  4. 手把手教你刪除MS JVM的幾種方法
  5. Java虛擬機(jī)(JVM)中的內(nèi)存設(shè)置詳解

【責(zé)任編輯:彭凡 TEL:(010)68476606】

責(zé)任編輯:彭凡 來(lái)源: javaeye
相關(guān)推薦

2021-10-12 08:00:00

存儲(chǔ)邊緣緩存邊緣服務(wù)器

2011-12-15 01:11:07

ibmdw

2011-06-01 14:18:41

JVM

2022-11-30 18:38:50

數(shù)據(jù)血緣DataLeap

2011-05-03 15:04:04

3D打印機(jī)

2009-04-28 13:48:09

2023-11-11 19:07:23

JVMJava

2017-11-30 12:53:21

深度學(xué)習(xí)原理視覺(jué)

2011-03-18 10:26:47

Java對(duì)象

2017-11-22 10:53:22

2023-10-30 13:31:22

Springboot工具Java

2010-09-16 10:12:55

無(wú)線規(guī)劃

2009-07-09 17:36:58

jvm.cfg

2009-07-09 16:33:06

eclipse jvm

2009-07-09 10:01:26

設(shè)置JVM內(nèi)存分配

2024-03-14 08:17:33

JVMJava對(duì)象

2009-06-04 08:01:25

Struts2攔截器原理

2011-03-14 09:57:09

J-Hi

2009-06-26 16:09:53

2010-09-25 13:11:48

DHCP工作原理
點(diǎn)贊
收藏

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

成年在线观看视频| 欧美大秀在线观看| 性欧美大战久久久久久久| www.久久久.com| 激情久久av一区av二区av三区| 久久精品一区二区三区不卡免费视频| 黄色永久免费网站| 国产精一区二区三区| 久久精品国产一区二区三区日韩| 中文字幕在线视频网站| 欧美日韩成人一区二区| 中文字幕在线视频不卡| 成人国产电影网| 青青草原亚洲| 亚洲性图久久| 99九九电视剧免费观看| 欧美成人一品| 国产精品对白刺激| 欧美手机在线| 国产精品久久久久秋霞鲁丝| 国内精品偷拍| xxx欧美精品| 欧美日韩尤物久久| 亚洲免费电影一区| 在线中文字幕-区二区三区四区| 亚洲成人免费电影| 2222www色视频在线观看| 亚洲精品少妇30p| 亚洲黄色av网址| 亚洲视频在线一区| 免费一区二区三区在线观看 | 日本午夜精品视频在线观看| 日韩av电影免费在线观看| 久久午夜影视| jlzzjlzz欧美大全| 亚洲最好看的视频| 国产精品久久久久9999吃药| 日韩电影免费观看高清完整| 国产精品免费精品自在线观看| 欧美美女一区二区三区| 99在线免费观看| 成人黄色在线看| av五月天在线| 亚洲一区二区美女| 中文字幕天天干| 在线欧美一区二区| 永久免费网站在线| 午夜精品久久久久久99热软件| 成人影院在线免费观看| 亚洲国产精品福利| wwwav在线| 一级在线免费视频| 91在线一区二区| 有色激情视频免费在线| 欧美日韩视频免费播放| 在线高清欧美| 51精品国产人成在线观看| 激情综合色播五月| 无遮挡又爽又刺激的视频| 7777精品伊人久久久大香线蕉经典版下载| 欧美黄色激情| 欧美精品久久久久a| 久久国产欧美日韩精品| 亚洲福利精品视频| 亚洲人成电影在线播放| 影音先锋中文字幕一区二区| 视频一区视频二区视频| 久久一区精品| 激情亚洲色图| 亚洲精品一区二区网址| 欧美精美视频| 三级在线免费观看| 婷婷中文字幕综合| 99综合久久| 欧美性视频在线播放| 91蜜桃在线观看| 77thz桃花论族在线观看| 裸模一区二区三区免费| 国产欧美精品在线观看| 午夜在线免费视频| 精品精品欲导航| 欧美在线综合| 国产日韩一区二区在线观看| 亚洲国产精彩中文乱码av在线播放| 欧美a级一区| 黄色av网址在线免费观看| 欧美主播福利视频| 亚洲精品成人在线| 丝袜美腿一区| 国产男女在线观看| 2021国产精品视频| 亚洲午夜免费电影| 国产乱码精品一区二区亚洲| 波多野结衣在线中文| 欧美亚洲一区在线| 欧美大奶子在线| 亚洲 自拍 另类小说综合图区| 欧美激情综合五月色丁香小说| 快播电影网址老女人久久| 国产精品九九九| 国产综合婷婷| 999在线免费视频| 试看120秒一区二区三区| 欧美精品三区| 久久人妻无码一区二区| 日韩精品视频三区| 久久婷婷色综合| 国产第一亚洲| 国产精品av一区| 中文字幕av一区二区三区高| 婷婷亚洲精品| 欧美人与动牲性行为| 一区二区高清视频| 欧美精品日韩三级| 亚洲青青青在线视频| 最新国产乱人伦偷精品免费网站| 黄色成人免费观看| 国产尤物99| 亚洲日本aⅴ片在线观看香蕉| 美国毛片一区二区| 九九九伊在线综合永久| 日本成人免费| 亚洲va男人天堂| 日韩的一区二区| 亚洲精品国久久99热| 妖精视频成人观看www| 欧美1级2级| 中国免费黄视频| 亚洲国产一区二区精品视频 | 久久av免费| 桃花岛成人影院| 最新在线观看av| 最新精品视频| 国产精品吴梦梦| 亚洲色图在线观看| 亚洲欧美视频在线观看| 国产一区日韩二区欧美三区| 日韩区欧美区| 秋霞影院午夜丰满少妇在线视频| 成人免费xx| 久久久性生活视频| 精品91免费| 国产精品久久久久久久久免费 | 尤物在线精品| 国产亚洲欧美日韩在线观看一区二区| 日韩经典一区| 日日夜夜亚洲精品| 桃花岛tv亚洲品质| 91九色porn在线资源| 欧美色18zzzzxxxxx| 成人短视频在线观看免费| 日本国产一区二区三区| 精品网站999www| 精品成人免费观看| 欧美亚洲动漫精品| 岛国av在线一区| 亚洲成人tv| 999国产精品| 91精品秘密在线观看| 欧美a视频在线| 国产成人精品一区二三区在线观看| 1024在线视频| 国产日本在线观看| wwwxxx在线观看| 好操啊在线观看免费视频| 污视频网站免费| 欧美午夜aaaaaa免费视频| 午夜视频在线瓜伦| 国产视频资源| 国产特级嫩嫩嫩bbb| 成人午夜激情av| 在线影院自拍| 天海翼一区二区三区免费| 黄视频网站在线看| 成人勉费视频| 欧美亚洲韩国| 亚洲1区在线观看| 校园春色另类视频| 亚洲三级影院| 经典三级在线一区| 精品国产一区二区三区久久久狼| 欧美精品一区在线播放| 在线视频免费一区二区| 亚洲香蕉成视频在线观看| 日韩欧美激情一区| 色噜噜狠狠狠综合曰曰曰| 欧美成人中文字幕| 国产精品视频白浆免费视频| www.久久艹| 亚洲一区二区三区欧美| 亚洲人成无码www久久久| 超碰在线中文| xxxxxx欧美| 久久久精品午夜少妇| 欧美理论电影在线观看| 欧美夫妻性生活xx| 日韩高清专区| 国产日产精品久久久久久婷婷| 日韩av中文| 182在线播放|