国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JVM與GC(一)

keithyau / 1616人閱讀

摘要:運行時數據區域名詞解釋程序計數器線程私有,存儲每個線程的指令,不存儲方法內容。方法報錯的時候異常棧能告訴在代碼的哪一行,就是程序計數器的功能。棧幀保存對堆內對象的引用。堆線程共享,存儲對象實例,就是回收這一部分。

JVM運行時數據區域

名詞解釋

程序計數器(Program Counter Register):線程私有,存儲每個線程的JVM指令,不存儲native方法內容。方法報錯的時候異常棧能告訴在代碼的哪一行,就是程序計數器的功能。

虛擬機棧(VM Stack):每個線程私有,存儲方法調用棧和線程局部基本類型變量。棧幀保存對堆內對象的引用。

堆(Heap):線程共享,存儲對象實例,GC就是回收這一部分。由于堆區域線程共享,對象在堆中分配需要加鎖,這個操作增大開銷,所以會先做逃逸分析,將線程本地小對象嘗試在TLAB(Thread Local Allocation Buffer)中分配,如果不能才去堆中的Eden分配。TLAB默認是Eden的1%,大對象在TLAB放不下,就在Eden分配了,所以多個小對象可能比一個大對象分配要快。

運行時常量池(Runtime Constant Pool):在方法區中分配,類的常量信息,方法引用信息,字符串常量等。

堆內結構

簡單地說,新對象出生在Eden,如果Eden不夠了,觸發gc(Minor GC)把存活的對象搬到s0,下次gc又搬到s1,再下次又搬到s0,如此往復,一個對象被搬到一定次數就是幾歲,達到這個閾值就進入老年代。(默認15歲,就是一個狗狗的壽命)老年代滿了也會gc(Major GC/Full GC)

GC算法

Mark-Sweep 標記清除算法

顧名思義,兩個階段,先標記不被引用的對象,再清除掉,騰出內存。就像把圍棋里被吃掉的棋子提出來。
缺點:空間碎片多

Copying 復制算法

把空間等分兩塊,一塊滿了將所有活著的對象復制到另一個塊空間,再一次清理掉之前的空間。
優點:解決了碎片問題
缺點:可用內存變低了

Mark-Compact 標記整理算法

標記之后,把存活的對象都移動到內存一端,把端邊界以外的內存空間清理掉。
沒有碎片,也能充分利用內存空間。老年代通常使用這種算法。

回收目標

引用計數為空的對象:每個對象有引用計數器,有引用就+1,引用失效就-1,為0則不可能再被使用。
GC root引用鏈搜索不到的對象:以GC root的對象為起點,沿它的引用搜索,引用鏈中搜索不到的對象也不會被使用。

參考文章:
https://www.cnblogs.com/zhouy...
https://www.cnblogs.com/wjtai...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75149.html

相關文章

  • JVM 的 工作原理,層次結構 以及 GC工作原理

    摘要:執行引擎作用執行字節碼,或者執行本地方法運行時數據區其實就是指在運行期間,其對內存空間的劃分和分配。 雖是讀書筆記,但是如轉載請注明出處https://uestc-dpz.github.io..拒絕伸手復制黨 JVM Java 虛擬機 Java 虛擬機(Java virtual machine,JVM)是運行 Java 程序必不可少的機制。JVM實現了Java語言最重要的特征:即平臺...

    qqlcbb 評論0 收藏0
  • [譯]GC專家系列2:Java 垃圾回收的監控

    摘要:原文鏈接這是專家系列文章的第二篇。運行在本地虛擬機上的應用的又稱為,通常與相同。性能數據需要持續觀察,因此在運行時需要定時輸出的監控信息。新生代容量的統計信息。是提供的一個式的圖表監控工具。 原文鏈接:http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/ 這是GC專家系列文章的第二...

    yiliang 評論0 收藏0
  • JVM垃圾回收

    摘要:這個算法看似不錯而且簡單,不過存在這一個致命傷當兩個對象互相引用的時候,就永遠不會被回收于是引用計數算法就永遠回收不了這兩個對象,下面介紹另一種算法。 前言 ? 如果要問Java與其他編程語言最大的不同是什么,我第一個想到的一定就是Java所運行的JVM所自帶的自動垃圾回收機制,以下是我學習JVM垃圾回收機制整理的筆記,希望能對讀者有一些幫助。 哪些內存需要回收?what? ? ...

    stormzhang 評論0 收藏0
  • 文了解JVM

    摘要:而使用虛擬機是實現這一特點的關鍵。每個字節碼指令都由一個字節的操作碼和附加的操作數組成。字節碼可以通過以下兩種方式轉換成合適的語言解釋器一條一條地讀取,解釋并執行字節碼執行,所以它可以很快地解釋字節碼,但是執行起來會比較慢。 一、什么是JVM JVM是Java Virtual Machine(Java 虛擬機)的縮寫,JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實...

    whatsns 評論0 收藏0
  • Java 垃圾回收(GC) 泛讀

    摘要:在這種消耗很高的狀態下,應用程序所有的線程都會掛起,暫停一切正常的工作,等待垃圾回收的完成。但是,因為線程切換和上下文轉換的消耗,會使得垃圾回收的總體成本上升,造成系統吞吐量的下降。 Java 垃圾回收(GC) 泛讀 文章地址: https://segmentfault.com/a/1190000008922319 0. 序言 帶著問題去看待 垃圾回收(GC) 會比較好,一般來說主要的...

    haoguo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<