1. 程式人生 > >java核心機制——jvm執行以及類載入全過程

java核心機制——jvm執行以及類載入全過程

jvm執行和類載入

為啥要研究類載入全過程? ~~有助於瞭解JVM執行過程 ~~更深入瞭解java動態性,(解熱部署,動態載入)提高程式來的靈活性。 類載入機制 ~JVM把class檔案載入到記憶體,並對資料進行校驗,解析和初始化,最終形成JVM可以直接使用的java型別的過程。
載入 ~將class檔案位元組碼內容載入到記憶體中,並將這些靜態資料轉換成方法去中執行是資料結構,早堆中生成一個代表這個類的java.lang.Class物件,作為方法區類資料的訪問入口。
連結 將java類的二進位制程式碼合併到jvm的執行狀態之中的過程 ~驗證:確保載入的類資訊符合jvm規範,沒有安全方面的問題。
~準備:正式類變數(static變數)分配記憶體並設定變數初始值的階段,這些記憶體都將在方法去中進行分配 ~解析:虛擬機器常量吃內的符號引用替換為直接引用的過程。 初始化 ~初始化階段執行類構造器<clinnt>()方法的過程。構造器<clinit>()方法是由編譯器自動收集類中的所有類變數的賦值動作和靜態語句(static塊)中的語句合併產生的。 ~當初初始化一個類的時候,如果發現父類還沒有進行初始化,則需要先發出父類的初始化 ~虛擬機器會保證一個類的<clinit>()方法在多執行緒環境中被正確加鎖和同步。 ~當訪問一個java類的靜態域時,只要真正宣告這個域的類才會被初始化。
package com.cn.love.ui;

public class test {
	public static void main(String[] args) {
		A a = new A();
		System.out.println(A.width);
		
	}
}
class A{
	public static int width=100;
	
	static {
		System.out.println("靜態初始類A");
		width=300;
	}
	public A(){
		System.out.println("建立A類的物件");
	}
}


相關推薦

java核心機制——jvm執行以及載入全過程

jvm執行和類載入 為啥要研究類載入全過程? ~~有助於瞭解JVM執行過程 ~~更深入瞭解java動態性,(解熱部署,動態載入)提高程式來的靈活性。 類載入機制 ~JVM把class檔案

【隨筆】JVM核心JVM執行載入

前言 本篇部落格將寫一點關於JVM的東西,涉及JVM執行時資料區、類載入的過程、類載入器、ClassLoader、雙親委派機制、自定義類載入器等,這些都是博主自己的一點理解,如果有誤,歡迎大家評論拍磚~   關於JVM執行時資料區

JVM執行載入全過程

一、 為什麼研究類載入全過程 有助於瞭解JVM執行過程 更深入瞭解java動態性(瞭解熱部署、動態載入)提高程式的靈活性。 二、 類載入機制 JVM把class檔案載入到記憶體,並

JVM執行載入

類載入機制 JVM把class檔案載入到記憶體,並對資料進行校驗、解析和初始化,最終形成JVM可以直接使用的Java型別的過程。 類載入過程分為三個步驟:裝載(Load),連結(Link)和初始化(Initialize)連結,如下圖所示: 載入:將class檔案位元組碼內容載入到記

面試分享:螞蟻三面面經(Java機制+JVM+執行緒池+事務+中介軟體)

一面 1、HashMap底層原理?HashTable和ConcurrentHashMap他們之間的相同點和不同點? 2、由上題提到鎖的問題 3、MySQL的表鎖&行鎖&樂觀鎖&悲觀鎖,各自的使用場景 4、Java執行緒鎖有哪些,各自的優劣勢 5、事務四大特

JVM執行載入過程

JVM執行和類載入過程 類載入機制: JVM把 class 檔案載入到記憶體,並對資料進行校驗、解析和初始化,最終形成JVM可以直接使用的 Java 型別的過程 載入 將 class 檔案位元組碼內容載入到記憶體隨,並將這些靜態資料轉換成方法區中的執行時資料結構,在堆中

Java中static關鍵字解析以及載入順序例題

一.static關鍵字的用途 在《Java程式設計思想》P86頁有這樣一段話:   “static方法就是沒有this的方法。在static方法內部不能呼叫非靜態方法,反過來是可以的。而且可以在沒有建立任何物件的前提下,僅僅通過類本身來呼叫static方法

JVM——深入解析原理和執行機制(一)載入過程

       隔了好久終於把這篇文章補上了,最近在看《深入理解Java虛擬機器》,一本很不錯的書,必須值得一看。        由於本人對Java類的載入過程一直是一知半解,所以優先看了一下

JVM——深入解析原理和執行機制(一)載入

      上次我們說了一下jvm中類載入的過程,大概有載入,連線(驗證,準備,解析),初始化這麼幾個步驟,當然要實現這些功能就需要有載入器,今天我們就來說說jvm中的類載入器。 一、分類

java載入機制和自定義載入

類載入順序 上圖所示的是類載入的順序,按照大的順序可以分為載入、連結、初始化 其中連結又可以分成驗證、準備、解析三個步驟 載入 1.將類的class檔案讀入到記憶體中 載入類檔案的方式有: 1. 本機檔案載入 2.jar包載入 3.網路載入 4.原始檔動態編譯載入

深入理解Java虛擬機器筆記——虛擬機器載入機制

虛擬機器類載入機制 類載入機制:虛擬機器把描述類的資料從class檔案載入到記憶體,並對資料進行校驗、  轉換解析和初始化,最終形成可以被虛擬機器直接使用的Java型別。 在Java中,型別的載入和連線過程都是在程式執行期間完成的。   類載入時機(類從載入到虛擬

讀薄《深入理解 Java 虛擬機器》虛擬機器載入機制

#虛擬機器類載入機制 類被載入的生命週期包括 載入→驗證→準備→解析→初始化→使用→解除安裝 解析階段在某些情況下可以在初始化階段之後開始,這是為了支援 Java 語言的執行時繫結。 虛擬機器規範嚴格規定了有且只有 5 種情況必須立即對類進行初始化。 遇到 n

【深入理解JVM】:載入機制

概述 虛擬機器把描述類的資料從Class檔案載入到記憶體,並對資料進行校驗、轉換解析和初始化,最終形成可以被虛擬機器直接使用的Java型別,這就是虛擬機器的類載入機制。 與那些在編譯時需要進行連結工作的語言不同,在Java語言裡,型別的載入、連線和初始化過程

深入理解java虛擬機器---4虛擬機器載入機制

類載入的整個生命週期:    載入、連線(驗證、準備、解析)、初始化、使用、解除安裝。 載入:      class檔案中的二進位制資料讀取到記憶體中,然後將該位元組流所代表的靜態資料結構轉化為方法區中執行的資料結構,並且在堆記憶體中生成一個java.lang.Class物

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

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

詳解Java記憶體區域?虛擬機器載入機制

一、Java執行時資料區域 1、程式計數器 “執行緒私有”的記憶體,是一個較小的記憶體空間,它可以看做當前執行緒所執行的位元組碼的行號指示器。Java虛擬機器規範中唯一一個沒有OutOfMemoryError情況的區域。 位元組碼直譯器工作時就說通過改變這個計數器的值來選取下一條需要執行的位元組碼指令,

深入java虛擬機器(六)——載入的父親委託機制

          在前面兩篇部落格中我們簡單介紹了類載入器的基礎和類的生命週期的基礎內容,今天我們來繼續深入的來看一下java的類載入器的詳細內容。我們都知道。類載入器用來把類載入到java虛擬機器。從JDK2.0開始,類的載入過程採用父親

java核心機制JVM

java執行機制 核心機制之JVM JVM是Java程式的執行環境 JVM是JRE的一部分,它是一個虛構出來的計算機,也可以理解為以位元組碼為機器指令的CPU JVM執行位元組碼檔案時,把位元組碼

Java虛擬機器結構(記憶體,載入器,執行引擎)

1. JVM背景知識 1995年,Java誕生於Sun公司。目標:Write Once, Run Anywhere。 2006年,Sun宣佈Java開源,並在隨後1年,陸續將JDK的各部分在GPL v2協議下公開原始碼,並建立OpenJDK組織,對原始

Java記憶體區域與虛擬機器載入機制

一、Java執行時資料區域 1、程式計數器  “執行緒私有”的記憶體,是一個較小的記憶體空間,它