黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java學習視頻下載,GC垃圾回收

Java學習視頻下載,GC垃圾回收

更新時間:2020-05-08 16:30:42 來源:動力節(jié)點 瀏覽2145次

只要掌握了GC垃圾回收的相關知識點,程序員在工作中就不用擔心內存管理了,因為垃圾收集器會自動進行管理。本文為大家整理了GC垃圾回收的學習筆記,主要內容包括了判斷回收條件,虛擬機頻繁fullGC的解決對策以及經典的垃圾回收算法。大家要是對GC垃圾回收的相關學習學習感興趣,就接著看下去吧!

Java學習視頻下載,GC垃圾回收

    一、判斷回收條件

    1、可達性分析法:

    通過一系列“GCRoots”對象作為起點進行搜索,如果在“GCRoots”和一個對象之間沒有可達路徑,則稱該對象是不可達的。不可達對象不一定會成為可回收對象。進入DEAD狀態(tài)的線程還可以恢復,GC不會回收它的內存。(把一些對象當做root對象,JVM認為root對象是不可回收的,并且root對象引用的對象也是不可回收的)

    2、以下對象會被認為是root對象:

    (1)虛擬機棧(棧幀中本地變量表)中引用的對象

    (2)方法區(qū)中靜態(tài)屬性引用的對象

    (3)方法區(qū)中常量引用的對象

    (4)本地方法棧中Native方法引用的對象

    3、對象被判定可被回收,需要經歷兩個階段:

    (1)第一個階段是可達性分析,分析該對象是否可達

    (2)第二個階段是當對象沒有重寫finalize()方法或者finalize()方法已經被調用過,虛擬機認為該對象不可以被救活,因此回收該對象。(finalize()方法在垃圾回收中的作用是,給該對象一次救活的機會)

    4、方法區(qū)中的垃圾回收:

    (1)常量池中一些常量、符號引用沒有被引用,則會被清理出常量池

    (2)無用的類:被判定為無用的類,會被清理出方法區(qū)。判定方法如下:

    A、該類的所有實例被回收

    B、加載該類的ClassLoader被回收

    C、該類的Class對象沒有被引用

    5、finalize():

    (1)GC垃圾回收要回收一個對象的時候,調用該對象的finalize()方法。然后在下一次垃圾回收的時候,才去回收這個對象的內存。

    (2)可以在該方法里面,指定一些對象在釋放前必須執(zhí)行的操作。

    二、虛擬機頻繁fullGC的解決對策

    (1)首先用命令查看觸發(fā)GC的原因是什么jstat–gccause進程id

    (2)如果是System.gc(),則看下代碼哪里調用了這個方法

    (3)如果是heapinspection(內存檢查),可能是哪里執(zhí)行jmap–histo[:live]命令

    (4)如果是GClocker,可能是程序依賴的JNI庫的原因

    三、經典的垃圾回收算法

    1、Mark-Sweep(標記-清除算法):

    (1)思想:標記清除算法分為兩個階段,標記階段和清除階段。標記階段任務是標記出所有需要回收的對象,清除階段就是清除被標記對象的空間。

    (2)優(yōu)缺點:實現簡單,容易產生內存碎片

    2、Copying(復制清除算法):

    (1)思想:將可用內存劃分為大小相等的兩塊,每次只使用其中的一塊。當進行垃圾回收的時候了,把其中存活對象全部復制到另外一塊中,然后把已使用的內存空間一次清空掉。

    (2)優(yōu)缺點:不容易產生內存碎片;可用內存空間少;存活對象多的話,效率低下。

    3、Mark-Compact(標記-整理算法):

    (1)思想:先標記存活對象,然后把存活對象向一邊移動,然后清理掉端邊界以外的內存。

    (2)優(yōu)缺點:不容易產生內存碎片;內存利用率高;存活對象多并且分散的時候,移動次數多,效率低下

    4、分代收集算法

    思想:把堆分成新生代和老年代。

    (1)因為新生代每次垃圾回收都要回收大部分對象,所以新生代采用Copying算法。新生代里面分成一份較大的Eden空間和兩份較小的Survivor空間。每次只使用Eden和其中一塊Survivor空間,然后垃圾回收的時候,把存活對象放到未使用的Survivor(劃分出from、to)空間中,清空Eden和剛才使用過的Survivor空間。

    (2)由于老年代每次只回收少量的對象,因此采用mark-compact算法。

    (3)在堆區(qū)外有一個永久代。對永久代的回收主要是無效的類和常量

    5、GC使用時對程序的影響?垃圾回收會影響程序的性能,Java虛擬機必須要追蹤運行程序中的有用對象,然后釋放沒用對象,這個過程消耗處理器時間

    6、幾種不同的垃圾回收類型:

    (1)MinorGC:從年輕代(包括Eden、Survivor區(qū))回收內存。

    A、當JVM無法為一個新的對象分配內存的時候,越容易觸發(fā)MinorGC。所以分配率越高,內存越來越少,越頻繁執(zhí)行MinorGC

    B、執(zhí)行MinorGC操作的時候,不會影響到永久代(Tenured)。從永久代到年輕代的引用,被當成GCRoots,從年輕代到老年代的引用在標記階段直接被忽略掉。

    (2)MajorGC:清理整個老年代,當eden區(qū)內存不足時觸發(fā)。

    (3)FullGC:清理整個堆空間,包括年輕代和老年代。當老年代內存不足時觸發(fā)

Java學習視頻下載,GC垃圾回收

 以上就是動力節(jié)點java培訓機構的小編針對“Java學習視頻下載,GC垃圾回收”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 午夜一级做a爰片久久毛片 午夜一级免费视频 | 男女性潮高片无遮挡禁18 | 奇米影视亚洲狠狠色777不卡 | 一级毛片免费看 | 日日摸夜夜摸狠狠摸97 | 成人精品人成网站 | 日本免费影院 | 成人免费公开视频 | 国产黄的网站免费 | 国产精品久久久久乳精品爆 | 日韩激情视频在线 | 亚洲国产精品一区二区九九 | 一级视频在线播放 | 亚洲激情视频图片 | 老司机午夜精品视频你懂的 | xxx日本免费| 8x成人永久在线观看视频 | 午夜视| 欧美一区二区三区免费 | 欧美日韩国产综合在线小说 | 欧美在线观看一区二区三 | 日韩高清伦理片中字在线观看 | 青娱乐伊人 | 欧美日韩第一页 | 中文字幕一区二区三区精品 | 91短视频在线观看 | 欧美成人看片一区二区三区 | 国产在线观看成人免费视频 | 日本人成18在线播放 | 国产成人一区二区三区在线播放 | 欧美人成人亚洲专区中文字幕 | 高清 国产 日韩 欧美 | 免费人成网站免费看视频 | 免费无毒片在线观看 | 亚洲第一精品夜夜躁人人爽 | 国内日本精品视频在线观看 | 草草影院在线观看视频 | 高h猛烈做哭bl壮汉受小说 | 草在线视频 | 久久久久18 | 日本精品区 |