深入理解java虛擬機,類加載
1,通過使用靜態字段,只有真正定義這個字段的類才會被初始化,(子類不初始化,父類初始化
2,new數組,不初始化
3,通過類來調用一些類的常量,可以不初始化類,(常量在編譯期,被優化到NotInitialization類,成為了他的引用,所以可以不初始化
4,類和接口的初始化必要條件不同的是,接口可以不初始化父類的接口
5,加載:
1)通過一個類的全限定名獲得一個類的二進制字節流
2)把這個類的靜態存儲結構轉存在方法區的運行時數據結構(運行時常量池?
3)在java.lang.Object初始化一個類的對象,作為方法區的入口
6,驗證:重要不是必要
1)class文件格式檢驗
2)元數據檢驗,是否有父類,final
3)字節碼驗證,方法體裏面的操作
4)符號引用的檢驗
7,準備:成員變量0值(final除外
8,解析:字符引用-》直接引用
1)字符引用:和內存分布無關,所有引用目標不一定加載到內存中
2)直接引用:由字符引用翻譯,有直接的內存地址
9,初始化,顯式成員變量賦值
10,類和類加載器,只有類加載器相同,才是同一個類
深入理解java虛擬機,類加載
相關推薦
深入理解java虛擬機,類加載
深入理解java nal ava 直接 成員 進制 地址 lang 變量賦值 1,通過使用靜態字段,只有真正定義這個字段的類才會被初始化,(子類不初始化,父類初始化 2,new數組,不初始化 3,通過類來調用一些類的常量,可以不初始化類,(常量在編譯期,被優化到NotIni
深入理解Java虛擬機(類文件結構+類加載機制+字節碼執行引擎)
本地變量 ber 關鍵字 作者 看書 講解 個數 寫入 class類 周誌明的《深入理解Java虛擬機》很好很強大,閱讀起來頗有點費勁,尤其是當你跟隨作者的思路一直探究下去,開始會讓你弄不清方向,難免有些你說的啥子的感覺。但知識不得不學,於是天天看,反復看,就慢慢的理解了。
Java虛擬機的類加載機制
類加載 imp 接受 field 合規 結構 個人 strip 而不是 一、虛擬機的類加載機制 我們先看看類加載機制的定義,再來說法這一個加載流程。《深入理解JVM虛擬機》第二版中是這麽解釋的:虛擬機吧描述類的數據從Class問價加載到內存並對數據進行校驗/轉換解析和初始化
深入理解Java虛擬機- 學習筆記 - 虛擬機類加載機制
支持 pub eth 獲取 事件 必須 string 沒有 字節碼 虛擬機把描述類的數據從Class文件加載道內存,並對數據進行校驗,轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。在Java裏,類型的加載、連接和初始化過程都是在程序
深入理解JAVA虛擬機閱讀筆記——虛擬機類加載機制
info 程序 動態 alt 訪問 什麽 hand jdk 靜態方法 虛擬機把描述類的Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。 在Java語言中,類型的加載、連接
【Java】「深入理解Java虛擬機」學習筆記(5)- 類加載
一次 some img 不同的 各路 轉換 準備 自己 綁定 C/C++在編譯時需要進行連接,而Java的類加載、連接和初始化是在運行時完成的。 圖 類的生命周期 圖中解析的過程不一定在準備和初始化之間,也可以在初始化之後再開始,以支持Java
【Java】「深入理解Java虛擬機」學習筆記(4)- 類文件結構
jruby idt this 原因 cal constant borde ESS groov 我為什麽喜歡Java,另重要原因就是跨平臺,就是WORA。 程序員是爽了,但肯定有人要為你遮風擋雨,解決WORA的基石就是字節碼+虛擬機。 ?Tip Java生
JVM運行時數據區--深入理解Java虛擬機 讀後感
出棧 很好 棧幀 最大 出錯 生命周期 所有 img 就會 程序計數器 程序計數器是線程私有的區域,很好理解嘛~,每個線程當然得有個計數器記錄當前執行到那個指令。占用的內存空間小,可以把它看成是當前線程所執行的字節碼的行號指示器。如果線程在執行Java方法
重讀《深入理解Java虛擬機》
-xmx 垃圾收集 劃分 tac 棧內存 列表 進行 nbsp 申請 一、Java虛擬機內存區域如何劃分 1、Java虛擬機內存區域的劃分 區域名稱 作用(用途) 類型 特點 虛擬機規定異常情況 其他說明 1 程序計數器 指示當前正在執行的字節碼指
深入理解 Java 虛擬機之學習筆記(1)
over 信息 hotspot 體系 ima 模塊化 介紹 style 創建 本書結構: 從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模塊化,以及JDK的編譯 講解了JVM的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產
深入理解java虛擬機7---線程安全 & 鎖優化
err iou nan gpa egg aik risl cpn hang python%E5%AD%A6%E4%B9%A0%20%20%20%20%20%E5%8F%98%E9%87%8F%E7%9A%84%E6%93%8D%E4%BD%9C%20%E4%B8%8E%20
《深入理解Java虛擬機》筆記04 -- 並發鎖
server som 競爭 包括 系統 cap cnblogs blocks 嘗試 Java虛擬機在操作系統層面會先盡一切可能在虛擬機層面上解決競爭關系,盡可能避免真實的競爭發生。同時,在競爭不激烈的場合,也會試圖消除不必要的競爭。實現這些手段的方法包括:偏向鎖、輕量級鎖、
《深入理解Java虛擬機:JVM高級屬性與最佳實踐》讀書筆記(更新中)
pen 內存區域 深度 span 進化 ria 最短 描述 core 第一章:走進Java 概述 Java技術體系 Java發展史 Java虛擬機發展史 1996年 JDK1.0,出現Sun Classic VM HotSpot VM, 它是 Sun JDK 和 Open
深入理解JAVA虛擬機之JVM性能篇---基礎知識點
默認 生命周期 ima 線程 images 對象 情況 -- 是否 一、堆與棧 堆和棧是程序運行的關鍵,其間的關系有必要理清楚,兩者如下圖所示: 1. 堆: 所有線程共享,堆中只負責存儲對象信息。 2. 棧: 在Java中每個線程都會有一個相應的線
深入理解JAVA虛擬機之JVM性能篇---垃圾回收
小數據 alt tro 調優 permsize 多次 快速 com src 一、基本垃圾回收算法 1. 按基本回收策略分 1) 引用計數(Reference Counting) 對象增加一個引用,即增加一個計數,刪除一個引用則減少一個計數。垃圾回收時,只用收集計
深入理解Java虛擬機——java內存區域與內存溢出異常(一)
線程 文件的 語言 沒有 虛擬 深入理解java 十倍 並且 周期 Java虛擬機全稱:java virtual machine;是Java開發語言中,用來運行Java字節碼文件的平臺;通俗的講,就是一個程序。它提供對Java字節碼的解釋及運行,從而使Java語言能獨立於各
深入理解Java虛擬機讀書筆記---運行時數據區域
強制 申請 異常 模型 分配內存 類信息 gist 運行時 過程 運行時數據區域 1.程序計數器 程序計數器(Program Counter Register)是一塊較小的內存空間,它可以看作是當前線程所執行的字節碼的行號指示器。字節碼解釋器工作時就是通過改變這
《深入理解Java虛擬機》筆記02 -- 垃圾收集算法
blog 垃圾收集 虛擬機 邊界 統一 算法 改進 其中 全部 1. 標記 - 清除算法 先標記出所有需要回收的對象,在標記完成後統一回收所有被標記的對象。它是最基礎的收集算法。其他收集算法都是根據其思路,改進其不足之處。 缺點:1) 標記和清除兩個階段的效
JVM常用參數配置---摘自《深入理解java虛擬機》《Java性能權威指南》
blog jvm log msi onsize regions rms 使用 常用 //常見配置匯總 //堆設置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:設置新生代大小 -XX:NewRatio=n:設置新生代和老年代的比值.
《深入理解Java虛擬機:JVM高級特性與最佳實踐》【PDF】下載
構建 實現原理 jvm內存 本地方法棧 人物 lvm 劃分 同時 棧溢出 《深入理解Java虛擬機:JVM高級特性與最佳實踐》【PDF】下載鏈接: https://u253469.pipipan.com/fs/253469-230062566 內容簡介 作為一位j