摘要:運行時數據區域名詞解釋程序計數器線程私有,存儲每個線程的指令,不存儲方法內容。方法報錯的時候異常棧能告訴在代碼的哪一行,就是程序計數器的功能。棧幀保存對堆內對象的引用。堆線程共享,存儲對象實例,就是回收這一部分。
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
摘要:執行引擎作用執行字節碼,或者執行本地方法運行時數據區其實就是指在運行期間,其對內存空間的劃分和分配。 雖是讀書筆記,但是如轉載請注明出處https://uestc-dpz.github.io..拒絕伸手復制黨 JVM Java 虛擬機 Java 虛擬機(Java virtual machine,JVM)是運行 Java 程序必不可少的機制。JVM實現了Java語言最重要的特征:即平臺...
摘要:原文鏈接這是專家系列文章的第二篇。運行在本地虛擬機上的應用的又稱為,通常與相同。性能數據需要持續觀察,因此在運行時需要定時輸出的監控信息。新生代容量的統計信息。是提供的一個式的圖表監控工具。 原文鏈接:http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/ 這是GC專家系列文章的第二...
摘要:這個算法看似不錯而且簡單,不過存在這一個致命傷當兩個對象互相引用的時候,就永遠不會被回收于是引用計數算法就永遠回收不了這兩個對象,下面介紹另一種算法。 前言 ? 如果要問Java與其他編程語言最大的不同是什么,我第一個想到的一定就是Java所運行的JVM所自帶的自動垃圾回收機制,以下是我學習JVM垃圾回收機制整理的筆記,希望能對讀者有一些幫助。 哪些內存需要回收?what? ? ...
摘要:在這種消耗很高的狀態下,應用程序所有的線程都會掛起,暫停一切正常的工作,等待垃圾回收的完成。但是,因為線程切換和上下文轉換的消耗,會使得垃圾回收的總體成本上升,造成系統吞吐量的下降。 Java 垃圾回收(GC) 泛讀 文章地址: https://segmentfault.com/a/1190000008922319 0. 序言 帶著問題去看待 垃圾回收(GC) 會比較好,一般來說主要的...
閱讀 2435·2021-10-09 09:44
閱讀 3792·2021-09-22 15:43
閱讀 2924·2021-09-02 09:47
閱讀 2539·2021-08-12 13:29
閱讀 3871·2019-08-30 15:43
閱讀 1680·2019-08-30 13:06
閱讀 2189·2019-08-29 16:07
閱讀 2745·2019-08-29 15:23