1. 程式人生 > >個人理解 java虛擬機器中的符號引用和直接引用

個人理解 java虛擬機器中的符號引用和直接引用

      在java中,一個java類將會編譯成一個class檔案。在編譯時,java類並不知道引用類的實際記憶體地址,因此只能使用符號引用來代替。比如org.simple.People類引用org.simple.Tool類,在編譯時People類並不知道Tool類的實際記憶體地址,因此只能使用符號org.simple.Tool(假設)來表示Tool類的地址。而在類裝載器裝載People類時,此時可以通過虛擬機器獲取Tool類 的實際記憶體地址,因此便可以既將符號org.simple.Tool替換為Tool類的實際記憶體地址,及直接引用地址。

相關推薦

個人理解 java虛擬機器符號引用直接引用

      在java中,一個java類將會編譯成一個class檔案。在編譯時,java類並不知道引用類的實際記憶體地址,因此只能使用符號引用來代替。比如org.simple.People類引用org

深入理解Java虛擬機器-類載入連線初始化解析

不管學習什麼,我一直追求的是知其然,還要知其所以然,對真理的追求可以體現在方方面面。人生短短數十載,匆匆一世似煙雲,我認為,既然來了,就應該留下一些有意義的東西。本系列文章是結合張龍老師的《深入理解JVM》視訊做的一個筆記,其中將自己在學習過程中的實踐記錄、思考理解整合在了一起。希望在鞏固自己的知識時讓更多的

java虛擬機器符號引用直接引用

在java中,一個java類將會編譯成一個class檔案。在編譯時,java類並不知道引用類的實際記憶體地址,因此只能使用符號引用來代替。比如org.simple.People類引用org.simple.Tool類,在編譯時People類並不知道Tool類的實際記憶體地址,因此只能使用符號org.simple

《深入理解Java虛擬機器個人讀書總結——垃圾收集/回收演算法

說起垃圾回收,我估計很多初級java開發(包括之前的我)想到的是這個JVM會幫我管理的啊,我們不太需要去考慮這種事情。但是,當需要排查各種記憶體溢位、記憶體洩漏問題時,當垃圾收整合為系統達到更高併發量的瓶頸的時候,我們就有必要對垃圾回收GC進行了解了。思考GC需要完成的3件事情: 1.

《深入理解Java虛擬機器個人讀書總結——JAVA虛擬機器記憶體

《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體 最近在讀《深入理解Java虛擬機器》,網上對Java虛擬機器的總結有很多,自己覺得自己也應該記錄一點個人的讀書總結,以便日後複習方便。 隨著開發工作的逐漸深入,對Java的理解不能止步於crud,Java不像C語言

《深入理解Java虛擬機器個人讀書總結——虛擬機器類載入機制

我們都知道Java虛擬機器是用來執行我們編譯好的.class檔案的,class檔案中夾帶類的各種資訊,虛擬機器要執行這些檔案,第一件事就是要載入到虛擬機器中,這就引出了這次總結的問題——虛擬機器是如何載入這些class檔案的?載入後虛擬機器是怎麼處理檔案中夾帶的資訊的? 類載入機制

深入理解Java虛擬機器學習筆記2-JVM物件佈局

一、物件的記憶體佈局 在Hotspot中,物件在記憶體中儲存佈局可以分為三塊: 物件頭(Header) 、例項資料(Instance Data)、對齊填充(Padding) 二、物件頭 1、物件執行時資料: 雜湊嗎、GC分代年齡、鎖狀態標誌、執行緒持有的鎖、偏向執行緒I

深入理解JAVA虛擬機器——JVM的資料型別(以及按引用傳遞法則)

Java虛擬機器是通過某些資料型別來執行計算的,資料型別可以分為兩種:基本型別和引用型別,基本型別的變數持有原始值,而引用型別的變數持有引用值。    Java語言中的所有基本型別同樣也都是Java虛擬

Java物件與JVM(三) Java物件在Java虛擬機器引用訪問方式

Java物件與JVM(三) Java物件在Java虛擬機器中的引用訪問方式         在前面兩篇文章中瞭解到Java物件例項是如何在HotSpot虛擬機器的Java堆中建立的,以及建立後的記憶體佈局是怎樣的。 下面我們詳細瞭解在Java堆中的Java物件是如何訪

《深入理解Java虛擬機器》第2版挖的坑終於在第3版被R大填平了

這是why技術的第34篇原創文章 本週還是在家辦公的一週,上面的圖就是我在家的工位,和上週《Dubbo Cluster叢集那點你不知道的事》這篇文章裡面的第一張圖片比起來,升級了顯示器支撐臂,如果短還可以加長;用上了機械鍵盤,讓指尖享受那一點點來自紅軸的美妙反饋...... 還是那句話:工欲善其事,必

深入理解Java虛擬機器--個人總結(持續更新)

# 深入理解Java虛擬機器--個人總結(持續更新) **每天按照書本學一點,會把自己的總結思考寫下來,形成輸出,持續更新,立帖為證** ```java -- 2020年7月7日 開始第一次學習 -- 2020年7月8日 今天在百忙Rush B中抽出時間,學了點習,計劃明天把本地方法棧和Java堆看完總結

理解Java虛擬的棧、堆、堆棧

線程 常量 9.png lan 和數 編譯器 對象 堆棧 棧區 JAVA的JVM的內存可分為3個區:堆(heap)、棧(stack)和方法區(method) 棧區: 每個線程包含一個棧區,棧中只保存方法中(不包括對象的成員變量)的基礎數據類型和自定義對象的引用

深入理解Java虛擬機器總結一虛擬機器效能監控工具與效能調優(三)

深入理解Java虛擬機器總結一虛擬機器效能監控工具與效能調優(三) JDK的命令列工具 JDK的視覺化工具 效能調優 JDK的命令列工具 主要有以下幾種: jps (Java Process Status Tool): 虛擬機器程序

深入理解Java虛擬機器總結一垃圾收集器與記憶體分配策略(二)

深入理解Java虛擬機器總結一垃圾收集器與記憶體分配策略(二) 垃圾回收概述 如何判定物件為垃圾物件 垃圾回收演算法 垃圾收集器詳解 記憶體分配策略 垃圾回收概述 如何判定物件為垃圾物件 引用計數法: 在物件

深入理解Java虛擬機器-OOM分析

OOM即Out Of Memory Error,記憶體溢位。 如果不斷的建立物件,並且這些物件到GC Roots之間有可達路徑,那麼這些物件就不會被垃圾回收機制清楚,當物件數量達到容量限制是就會產生記憶體溢位。 在虛擬機器中,只有程式計數器不會產生OOM,除此之外其他幾個執行時區域都有可

深入理解Java虛擬機器-Eclipse Memory Analyzer 安裝使用說明

Eclipse Memory Analyzer(簡稱MAT)是一個功能豐富且操作簡單的JVM Heap Dump分析工具,可以用來輔助發現記憶體洩漏減少記憶體佔用。 使用 Memory Analyzer 來分析生產環境的 Java 堆轉儲檔案,可以從數以百萬計的物件中快速計算出物件的 Retai

讀薄《深入理解 JAVA 虛擬機器Java記憶體分配策略

記憶體分配規則不是固定的,取決於當前使用的是哪一種垃圾收集器以及虛擬機器配置。 物件優先在 Eden 上分配 大多數情況下,物件分配在 Eden 上,當記憶體不足的時候觸發一次 Minor GC。 大物件分配進老年代 需要連續記憶體空間的物件,最典型的是很長的字串已經陣列,寫程式的時候應該避免生命週期

讀薄《深入理解 JAVA 虛擬機器Java記憶體區域

很早之前看了《深入理解 JAVA 虛擬機器》並寫下了讀書筆記。最近在結合一些其他資料整理部落格。希望能幫助到其他人抓住書的重點。 Java執行時資料區域 Java執行時資料區域 白色為執行緒獨佔的,灰色為執行緒共享的。 Java在執行的時候會把他所管理的記憶體劃分為若干區域,經常有人把記憶體區域分為

【深入理解Java 虛擬機器】學習筆記一

目錄 執行時資料區域 根索引演算法 垃圾回收演算法 垃圾收集器 雙親委派模型 JDK命令列工具Jstack 和 JConsole 1、執行時資料區域 執行緒共享:方法區、堆 執行緒私有:虛擬機器棧、本地方法棧、程式計數器 2、根索引演

Java】「深入理解Java虛擬機器」學習筆記(1) - Java語言發展趨勢

這本書寫的比較早,現在這些功能都已經不同程度的實現了。 1、模組化     JDK9之前的版本都是一個整體,使用者可能只需要使用一個小功能,但他不得不下載整個JDK。不能滿足定製化需求,顯然Java語言的發展因此大大受限。   所以,Sun公司在OpenJDK建立了一個Jigsaw(拼圖)的專案來推動模