啪啪啪国产一区二区三区_女人体1963视频一区二区_亚洲精品无码久久红颜_先锋av资源网站


學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

垃圾回收,從JVM開始

來源:北大青鳥總部 2023年07月05日 11:43

摘要: 在互聯(lián)網(wǎng)程序的世界里也存在垃圾回收的概念,那便是我們中大型應用開發(fā)必用、使用的應用程序占比超過80%的開發(fā)語言JAVA了。

關于垃圾回收分類,相信大家還是比較有感觸的。在垃圾回收條例中,從之前的可回收垃圾、不可回收垃圾,升級為把垃圾明確分為了廚余垃圾、可回收垃圾、有害垃圾、其它垃圾四大類。每個人都要養(yǎng)成垃圾分類、垃圾回收的意識。事實上在互聯(lián)網(wǎng)程序的世界里也存在垃圾回收的概念,那便是我們中大型應用開發(fā)必用、使用的應用程序占比超過80%的開發(fā)語言JAVA了。

所有的Java程序都是運行在JVM(JAVAVirtualMachine,Java虛擬機)中的,在Java程序運行時,JVM會為每個對象創(chuàng)建一塊內(nèi)存,并維護管理這塊內(nèi)存。現(xiàn)在最新的JDK版本(JAVADevelopmentKit,Java開發(fā)工具包,JVM運行在JDK上)已到JDK13及以上了,因此通過下圖(JDK1.8)可以來看看JVM的內(nèi)存模型。在內(nèi)存模型中包含堆、虛擬機棧本地方法棧、方法區(qū)、程序計數(shù)器等等元素,堆主要用于存放所有的對象實例,實例創(chuàng)建后在此分配內(nèi)存;虛擬機棧是Java方法執(zhí)行的內(nèi)存模型,每個Java方法在執(zhí)行時都會同時創(chuàng)建一個棧幀,來存儲局部變量表、操作棧、動態(tài)鏈接、方法返回地址等;本地方法棧則是服務于虛擬機使用到的Native方法;方法區(qū)是存儲虛擬機加載的元數(shù)據(jù)信息;元數(shù)據(jù)區(qū)主要是存儲方法名、方法變量等元數(shù)據(jù)信息;程序計數(shù)器主要是指明當前線程所執(zhí)行的字節(jié)碼。因為Java對象主要在Heap堆區(qū)中運行,因此總的來說,JVM管控的內(nèi)存就是Heap內(nèi)存、Non-Heap內(nèi)存。



一個Java程序的執(zhí)行如下圖所示,通過編譯成class文件,調用JVM的類加載子系統(tǒng),在內(nèi)存空間中創(chuàng)建對象、執(zhí)行對象,執(zhí)行結束后,進行對象的內(nèi)存回收,也就是垃圾回收(GarbageCollection)



所謂垃圾回收指的是JVM釋放掉那些沒有引用對象做占用的內(nèi)存空間,給新的對象使用參照垃圾分類的思想,在JVM中也會根據(jù)對象的存活周期將對象分代,包含年輕代、老年代、持久代,通過內(nèi)存分代,可以更好的執(zhí)行垃圾回收,提高效率。年輕代用來存儲最近新創(chuàng)建的對象,在年輕代中存在的對象死亡是非常快的,為了提高年輕代中的垃圾回收效率,年輕代又會劃分出Eden、Survivorfrom、Survivorto三個區(qū)域,年輕代的垃圾回收成為MinorGC;老年代用來存儲存活很久的對象,老年代的垃圾回收成為MajorGC;持久代存儲JVM運行時的需要的Java庫的類和方法,一般由Java廠商指定,在JDK1.8之后,改名為metaspace元空間。



在JVM中內(nèi)存回收過程大概如下:對象在年輕代EdenSpace創(chuàng)建,當EdenSpace內(nèi)存空間滿的時候,垃圾回收器就把所有在EdenSpace中的對象都掃描一次,把有效的對象復制到第一個SurvivorSpace(即Survivorfrom),無效的對象所占用的空間進行釋放。當EdenSpace再次變滿的時候,把EdenSpace中有效的對象移動到第二個SurvivorSpace(即Survivorto),同時第一個SurvivorSpace的數(shù)據(jù)也會移動到第二個SurvivorSpace。如果填充到Survivorto的對象被Survivorfrom或EdenSpace中的對象引用,那么系統(tǒng)會認為它們生命周期比較長,就會把它們移動到老年代。經(jīng)過年輕代和老年代來來回回的新建、回收(MinorGC、MajorGC),不斷的釋放內(nèi)存給程序用,如果不能夠釋放足夠的內(nèi)存空間,就會執(zhí)行FullGC,把所有在堆中運行的線程清除。

那么年輕代和老年代又是使用什么算法進行垃圾回收的呢?在年輕代中使用的是復制-清除算法,所謂復制清除算法指的是在執(zhí)行MinorGC時,先將應用程序掛起,將Eden和Survivorfrom中存活的對象復制到Survivorto當中,然后清除掉Eden和Survivorfrom中的對象,MinorGC是很頻繁的。在老年代使用的是標記-清除算法,在執(zhí)行MajorGC時,把對象標記出來,然后清除掉,MajorGC是比較低頻的。值得注意的是在GC時會產(chǎn)生很多內(nèi)存碎片,如果有較大的對象要從年輕代進入老年代,但并不能找到合適的存儲空間時,也會觸發(fā)GC。

垃圾回收算法是在垃圾回收器中實現(xiàn)和運行的,在JDK廠商(包含OracleJDK、HPJDK、IBMJDK)中也提供了不同的垃圾收集器。對于年輕代實現(xiàn)分別是Serial收集器、ParallelScavenge收集器、ParNew收集器,在老年代中是SerialOld(Mark Sweep Compact)收集器、ParallelOld(PSMarkSweep)收集器、CMS(ConcurrentMarkSweep)收集器。

年輕代垃圾回收器中,Serial收集器是一種單線程收集器,使用單個GC線程進行垃圾回收,在垃圾回收時,將整個應用程序掛起(stopthe world),然后復制-清除;ParallelScavenge是多線程收集器,使用多個GC線程進行垃圾回收;ParNew也是一種多線程回收器,使用多個GC線程回收,可以和CMS一起使用。老年代垃圾回收器中,SerialOld是一種單線程回收器,使用單個線程進行標記-清除;ParallelOld是并行垃圾回收器,使用多個GC線程進行垃圾回收;CMS是并行標記垃圾回收器,它的特點是垃圾回收算法在后臺不會暫停應用線程并實現(xiàn)大部分多垃圾回收。年輕代和老年代垃圾回收器之間的關系關聯(lián)可以見下圖所示。



垃圾回收真不是一件容易的事情啊!Java程序員可以通過開源免費的Jprofier、Jconsle等工具監(jiān)控垃圾回收情況,也可以使用付費的APM功能來進行監(jiān)控。在垃圾回收不正常時,可以運行參數(shù)設置JVM堆內(nèi)存大小、新生代、持久代空間。使用-Xms可以設置堆的最小空間,-Xmx可以設置堆堆最大空間,-XX:NewSize可以設置新生代最小空間,-XX:MaxNewSize可以設置新生代最大空間,-XX:PermSize可以設置永久代最小空間,-XX:MaxPermSize可以設置永久代最大空間,-Xss可以設置每個線程的堆棧大小。比如java-Xmx 10240m -Xms 10240m-Xmn5120m就設置了JVM最大可用內(nèi)存時10240M,初始化內(nèi)存也是10240M,年輕代內(nèi)存為5120M。



當你開始編程、愛上編程時,你會發(fā)現(xiàn)程序的世界和生活的世界是共通的。在JVM的垃圾回收中有分類、有回收規(guī)則、有監(jiān)控工具、有管理規(guī)則,這和我們生活中的垃圾分類不正好是一樣一樣的嗎?世界如此美妙,我等凡夫俗子就好好的生活,好好的編程吧~


標簽: java
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內(nèi)鏈接
成人免费高清视频| 国产一级生活片| 麻豆午夜视频| 亚洲女人国产香蕉久久精品| 国产成a人片在线观看视频| 国产伦精品一区三区视频| 精品国产亚洲人成在线| 亚洲女初尝黑人巨高清在线观看| 日韩免费在线视频| 国产视频一区二区在线观看| 天天色色色| 韩国妈妈的朋友在线播放| 欧美一级视频免费观看| 国产伦精品一区三区视频| 青青青草影院| 九九九网站| 日韩一级黄色片| 人人干人人草| 久久久成人影院| 日本在线www| 青青青草影院| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产91精品一区| 欧美另类videosbestsex视频| 天天做日日干| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品久久久久久免费影院| 国产精品免费久久| 国产网站在线| 欧美日本韩国| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 香蕉视频久久| 精品视频在线观看免费| 国产一区二区精品久久91| 国产麻豆精品hdvideoss| 国产伦精品一区三区视频| 国产精品自拍在线| 日韩欧美一二三区| 深夜做爰性大片中文| 99久久精品国产高清一区二区| 国产高清视频免费| 国产一区二区精品| 精品视频在线看| 久草免费在线观看| 99色视频在线观看| 亚洲 男人 天堂| 黄色免费三级| 毛片成人永久免费视频| 久久精品欧美一区二区| 久久精品免视看国产成人2021| 中文字幕一区二区三区精彩视频| 日韩一级黄色大片| 欧美1区| 国产视频一区二区在线观看 | 精品久久久久久综合网| 欧美1区| 欧美电影免费| 国产视频一区二区在线观看| 亚洲第一色在线| 久久福利影视| 成人高清视频免费观看| 国产麻豆精品免费密入口| 美女免费黄网站| 国产91精品一区| 精品国产三级a∨在线观看| 日本伦理片网站| 久久国产精品自由自在| 国产福利免费观看| 日韩欧美一二三区| 日韩一级黄色片| 日韩一级黄色片| 免费国产在线视频| 国产美女在线观看| 麻豆午夜视频| 99久久精品国产麻豆| 国产精品123| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美α片无限看在线观看免费| 国产一区二区精品在线观看| 日本特黄特色aaa大片免费| 免费一级片在线| 国产视频一区二区在线观看 | 欧美国产日韩在线| 九九热国产视频| 午夜精品国产自在现线拍| 99久久精品国产麻豆| 日本在线不卡免费视频一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人免费一级毛片在线播放视频| 精品视频免费看| 日本在线不卡视频| 九九九网站| 欧美激情一区二区三区在线 | 精品久久久久久中文| 麻豆网站在线看| 久久精品免视看国产明星| 日韩av成人| 韩国三级视频在线观看| 日韩专区在线播放| 日本伦理片网站| 精品国产一级毛片| 久久99这里只有精品国产| 色综合久久久久综合体桃花网| 天天做日日干| 欧美1区2区3区| 午夜家庭影院| 久久久久久久久综合影视网| 久久国产一久久高清| 欧美大片a一级毛片视频| 成人高清视频免费观看| 青青久在线视频| 香蕉视频久久| 天堂网中文在线| 美女免费毛片| 免费国产在线观看不卡| 国产一区免费在线观看| 欧美激情一区二区三区视频| 九九精品久久| 黄色短视频网站| 国产91精品系列在线观看| 午夜激情视频在线观看 | 黄视频网站在线看| 99久久精品国产免费| 久久福利影视| 天天色成人| 日韩中文字幕在线播放| 人人干人人草| 久草免费在线观看| 日本特黄一级| 国产精品自拍一区| 日韩一级黄色| 午夜在线影院| 国产91精品一区| 精品国产亚一区二区三区| 国产激情一区二区三区| 一本高清在线| 国产精品免费久久| 国产亚洲男人的天堂在线观看| 国产不卡在线看| 日本伦理片网站| 亚洲第一页色| 91麻豆国产| 国产成人啪精品| 日韩一级黄色大片| 黄色免费网站在线| 精品国产一区二区三区免费 | 国产成人啪精品| 二级特黄绝大片免费视频大片| 欧美国产日韩久久久| 韩国三级视频在线观看| 欧美一级视频免费观看| 国产精品自拍亚洲| 精品毛片视频| 国产精品123| 韩国三级一区| 国产网站免费视频| 久久成人亚洲| 四虎论坛| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产a视频| 一 级 黄 中国色 片| 青草国产在线| 日本伦理黄色大片在线观看网站| 九九干| 天天做日日干| 日韩中文字幕在线观看视频| 毛片成人永久免费视频| 成人av在线播放| 欧美激情一区二区三区在线| 日韩专区亚洲综合久久| 国产精品自拍在线| 一级女性全黄生活片免费| 免费毛片基地| 国产麻豆精品免费密入口| 久草免费在线色站| 亚洲爆爽| a级毛片免费全部播放| 国产高清在线精品一区a| 一级女性全黄久久生活片| 二级片在线观看| 黄色福利| 99久久网站| 国产91精品一区二区| 99热精品一区| 国产91素人搭讪系列天堂| 日日夜人人澡人人澡人人看免| 亚洲www美色| 二级特黄绝大片免费视频大片| 国产不卡高清| 日韩av成人| 久久精品店| 99色视频在线观看| 久久精品欧美一区二区| 国产综合成人观看在线| 成人免费观看视频| 成人免费一级纶理片| 天堂网中文字幕| 九九精品在线| 国产a毛片| 成人免费福利片在线观看|