1. 程式人生 > >運用HSDB檢視JVM載入的class的位元組碼

運用HSDB檢視JVM載入的class的位元組碼

今天在學習動態代理時,突然很好奇怎麼檢視cglib生成的代理類的位元組碼。 對於jdk proxy可以使用sun.misc.ProxyGenerator類生成位元組碼,那麼cglib proxy位元組碼怎麼檢視呢?

在網上查了資料,發現可以使用HSDB檢視JVM執行時期的資料,從而可以檢視JVM載入的class的位元組碼嗎,又學到了一招,記錄如下:

1.  在命令列, 執行jps, 檢視我們要檢視的JVM的PID

2.  執行HSDB(HotSpot Debugger) 工具, java -classpath "%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB

3.  File->Attach to Hotspot Process, 輸入JVM PID

4.  Tools->ClassBrowser


相關推薦

運用HSDB檢視JVM載入class位元組

今天在學習動態代理時,突然很好奇怎麼檢視cglib生成的代理類的位元組碼。 對於jdk proxy可以使用sun.misc.ProxyGenerator類生成位元組碼,那麼cglib proxy位元組碼怎麼檢視呢?在網上查了資料,發現可以使用HSDB檢視JVM執行時期的資料,

JVM九:class位元組指令集

一:位元組碼與資料型別     Java虛擬機器的指令由一個位元組長度,代表著某種特定操作含義的數字(稱為操作碼)以及跟其隨後的零至多個代表此操作所需引數(稱為運算元)而構成。Java虛擬機器採用面向運算元棧而不是暫存器的架構,所以大多數指令都不包含運算元。因為位元

JVM Class位元組之三-使用BCEL改變類屬性

使用BCEL動態改變Class內容 之前對Class檔案中的常量池,Method的位元組碼指令進行了說明。JVM Class詳解之一JVM Class詳解之二 Method位元組碼指令 現在我們開始實際動手,使用BCEL改變位元組碼指令,對Class檔案進行功能擴充。

Java:如何用Eclipse檢視Class位元組指令集程式碼

轉:https://zhidao.baidu.com/question/368994445436401884.html 在遇到一些小問題的時候我們經常會使用Javap反編譯取得位元組碼來分析,雖然Javap能完成這個工作,但是有兩個缺點,一方面操作麻煩,需要很多步驟,一方

JVM總括三-位元組位元組指令、JIT編譯執行

JVM總括三-位元組碼、位元組碼指令、JIT編譯執行     java檔案編譯後的class檔案,java跨平臺的中間層,JVM通過對位元組碼的解釋執行(執行模式,還有JIT編譯執行,下面講解),遮蔽對作業系統的依賴。一個位元組(8位)可以儲存256中不同的指令,這樣的指令就是位元組碼,ja

jvm載入class檔案機制j

1、載入類檔案      a、讀取class檔案,從jar包、war包、class檔案、jsp檔案等處都可以。           a.1、採用雙親委派機制載入類,由classLoader和其子類完成,支援自定義

JVM 虛擬機器位元組指令表

把JVM虛擬機器位元組指令表整理了一下,方便搜尋,偶爾複習下 純手工整理,可能存在一些問題,如果發現請及時告之我會修正 位元組碼 助記符 指令含義 0x00 nop None 0x01

JVM載入class檔案的一些理解

Java是一種動態解釋型語言,類(class)只有被載入到JVM中後才能執行。每當一個Java程式執行時,都會有一個對應的JVM例項,只有當程式執行結束後,這個JVM才會退出。JVM例項通過呼叫類的main()方法來啟動一個Java程式。當執行指定程式時,JVM將編譯生成的.class檔案按照需求和一定的規則

深入理解Java虛擬機器(類檔案結構+類載入機制+位元組執行引擎)

周志明的《深入理解Java虛擬機器》很好很強大,閱讀起來頗有點費勁,尤其是當你跟隨作者的思路一直探究下去,開始會讓你弄不清方向,難免有些你說的啥子的感覺。但知識不得不學,於是天天看,反覆看,就慢慢的理解了。我其實不想說這種硬磨的方法有多好,我甚至不推薦,我建議大家閱讀這本書時,由淺入深,有舍有得,先從巨集觀去

JVM載入class檔案的原理機制

Java語言是一種具有動態性的解釋型語言,類(class)只有被載入到JVM中後才能執行。當執行指定程式時,JVM會將編譯生成的.class檔案按照需求和一定的規則載入到記憶體中,並組織成為一個完整的Java應用程式。這個載入過程是由類載入器來完成的,具體來說,就是由Clas

JVM載入class檔案的原理

原始檔:編寫Java原始檔(我們也稱之為原始碼檔案),它的副檔名為.java; 編譯:然後通過編譯器把原始檔編譯成位元組碼檔案,位元組碼副檔名為.class; 執行:最後使用直譯器來執行位元組碼檔案。 類載入的主要步驟: 當程式要使用某個類時,如果該類還未被載入到記

Java中的基礎----JVM載入class檔案的原理

Java是一種解釋型語言,class檔案只有被載入到JVM中才能執行。當執行指定程式時,JVM會將編譯生成的.class檔案按一定的規則(從硬碟)載入到記憶體中(由類載入器classLoader和它的子類來完成)。 有以下兩種載入方式: 1)隱式載入: 程式使用new等方式

JAVA面試常備題、JVM載入class檔案的原理機制

Java中的所有類,都需要由類載入器裝載到JVM中才能執行。類載入器本身也是一個類,而它的工作就是把class檔案從硬碟讀取到記憶體中。在寫程式的時候,我們幾乎不需要關心類的載入,因為這些都是隱式裝載的,除非我們有特殊的用法,像是反射,就需要顯式的載入所需要的類。 Ja

獲取Class位元組物件的三種方式

每個類被載入之後,系統就會為該類生成一個對應的位元組碼物件,通過該位元組碼物件就可以訪問到JVM中的對應的類。在Java中獲得Class物件通常有三種方式。 方式一,使用類的class屬性: Class<java.util.Date> clz1 = java.

jvm載入class檔案的原理機制分析

案例分析 A、B類中均包含靜態程式碼塊,非靜態程式碼塊以及構造器,A類是B類的父類。 public class A { static { System.out.print("A中靜態程式碼塊>>>"); }

JVM載入class檔案的原理機制簡單總結

Java中的所有類,必須被裝載到jvm中才能執行,這個裝載工作是由jvm中的類裝載器完成的,類裝載器所做的工作實質是把類檔案從硬碟讀取到記憶體中 java中的類大致分為三種:     1).系統類      2).擴充套件類      3).由程式設計師自定義的類類裝載方式

java檔案轉化為class位元組檔案

一.基本原理   二.實現過程 1.在桌面上編寫.java檔案 public class calculator { public static void main(String[] args) { int num1 = 7; int num2 = 5;

JVM載入class檔案的原理機制是什麼?類載入器的工作原理

Java語言是一種具有動態性的解釋型語言,類(class)只有被載入到JVM中後才能執行。當執行指定程式時,JVM會將編譯生成的.class檔案按照需求和一定的規則載入到記憶體中,並組織成為一個完整的Java應用程式。這個載入過程是由類載入器來完成的,具體來說,就是由Cla

描述一下JVM載入class檔案的原理機制?

JVM中類的裝載是由類載入器(ClassLoader)和它的子類來實現的,Java中的類載入器是一個重要的Java執行時系統元件,它負責在執行時查詢和裝入類檔案中的類。    由於Java的跨平臺性,經過編譯的Java源程式並不是一個可執行程式,而是一個或多個類檔案。當J

Java提高篇——JVM載入class檔案的原理機制

  在面試java工程師的時候,這道題經常被問到,故需特別注意。 1、JVM 簡介   JVM 是我們Javaer 的最基本功底了,剛開始學Java 的時候,一般都是從“Hello World ”開始的,然後會寫個複雜點class ,然後再找一些開源框架,比如Spring ,Hibernate 等等,再然