日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中gc的认识,java JVM GC 笔记(个人对GC 或JVM 的了解)

發布時間:2024/10/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中gc的认识,java JVM GC 笔记(个人对GC 或JVM 的了解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JVM 是在操作系統上的一個平臺,與操作系統間有個裝換器,將字節碼文件轉換成對應平臺的機器碼,字節碼文件從編譯器編譯.java文件產生。

JVM的結構 棧(存放的就是方法的引用,局部變量,方法體)、堆(常量,方法的實例)、方法區(常量池、靜態方法區)、程序計數器、本地方方法棧(不受虛擬機限制的本地方法棧區)

有一張圖挺詳細的

https://blog.csdn.net/Marvel__Dead/article/details/69220153?locationNum=5&fps=1

用戶編寫的java文件通過jvm的類加載器加載進內存

編譯優化的技術

方法內聯,去除方法調用成本,

冗余訪問消除

復寫傳播

無用代碼消除

公共子表達式消除,沒必要重復計算公共子表達式的值

數組邊界檢查消除

逃逸分析,分析對象的動態作用域,一個對象定以后,被外部方法調用,稱為方法逃逸,被其他線程訪問到,稱為線程逃逸 棧上分配 同步消除 標量替換

類加載器:

bootstrap(根類加載器)加載JVM自身類

extension(擴展類加載器)加載lib下的jar包

system(系統類加載器)加載用戶編寫的java文件

JVM加載類是按需加載 使用雙親委派模式

雙親委派模式:

當某個類加載器收到類加載的請求時不會自己直接加載 而是先去找父類加載器 當父類加載器還有父類時一直向上請求 直到根節點根類加載器;然后向下返回 當父類加載器能加載時 成功返回,不能加載就交由子類嘗試加載

類加載機制 : 加載 驗證 準備 解析 初始化 運行 狗帶

GC

JVMGC

GC主要發生在堆內存中 現在采用為分代回收

判斷對象是否是要回收的對象有可達性分析 和引用計數等

引用計數:新增一個引用計數+1 引用被釋放計數-1當計數為0則代表對象可回收 (此方法過時)

可達性分析:從GC Root開始 當一個對象和GC Root沒有間接或者直接的引用鏈時(么有直接或者間接的引用關系) 該對象不可用

GC Root包括:1、虛擬機棧中引用的對象。2、方法區中類靜態屬性實體引用的對象。3、方法區中常量引用的對象。4、 本地方法棧中JNI引用的對象。

分代回收:JVM中分為3個大區 年輕代 老年代 永久代(堆外內存)而大區中又有小區 所有的新生對象都是放在年輕代中 當區塊中滿了時會將還存存活的對象(沒有被GC掉的)移到下個區塊

總結

以上是生活随笔為你收集整理的java中gc的认识,java JVM GC 笔记(个人对GC 或JVM 的了解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。