1. 程式人生 > >java虛擬機器之概述

java虛擬機器之概述

1 走進java-概述
1>java不僅是一門程式語言,還是由一系列計算系軟體和規範形成的技術體系
2>java的優點,結構嚴謹 面向物件  跨平臺,提供相對安全的記憶體管理和訪問機制,
避免了記憶體洩漏和指標越界的問題
3>實現了熱點程式碼檢測和執行時編譯優化,是的java應用隨著執行時間的增加而獲得更高的效能
4> 擁有一套完善的應用程式介面,還有無數的商業機構和開源社群 
5>  應該去了解和思考java技術體系中這些技術是如何實現的,認清這些技術的運作本質,
是自己思考‘程式這樣寫好不好’的基礎和前提,當我們使用一門技術時,如果不再依賴書本
和其他人就能得到這個問題 答案,那才算昇華到了’不惑‘的境界
2 java 技術體系可以分為四個平臺
java Crad java小程式,執行在小記憶體裝置
javaME 支援移動終端 以前稱j2ME
javaSE 支援面向著桌面級應用,以前稱J2SE
javaEE 支援使用多層架構的企業應用
3 java 虛擬機器
class檔案通過類載入器子系統,載入到java的記憶體空間
java的記憶體空間分為四個區 方法區,java堆,java棧,本地方法棧,
java垃圾回收機制是針對記憶體空間的垃圾進行回收


什麼是java虛擬機器
java虛擬機器是java的核心和基礎,在java編譯器和os平臺之間
的虛擬處理器,他是一種基於下層作業系統和硬體平臺並利用軟體方法來實現的
抽象計算機
2>編譯器之需面向java虛擬機器,生成jvm能理解的程式碼或位元組碼檔案,jvm將每一條指令翻譯
成不同平臺機器碼,通過特定平臺執行

相關推薦

java虛擬機器概述

1 走進java-概述1>java不僅是一門程式語言,還是由一系列計算系軟體和規範形成的技術體系2>java的優點,結構嚴謹 面向物件  跨平臺,提供相對安全的記憶體管理和訪問機制,避免了記憶體洩漏和指標越界的問題3>實現了熱點程式碼檢測和執行時編譯優化,

Java虛擬機器‘靜態分派、動態分派’

Java是一門面向物件的語言,因為Java具備面向物件的三個特性:封裝、繼承、多型。分派的過程會揭示多型特性的一些最基本的體現,如“過載”和“重寫”在Java虛擬機器中是如何實現的,並不是語法上如何寫,我們關心的依然是虛擬機器如何確定正確的目標方法。 一、靜態分派 先看一段程式碼 pac

深入理解Java虛擬機器物件

一.物件的建立 1.類載入檢查和分配記憶體 虛擬機器遇到一條new指令時,首先將去檢查這個指令的引數是否能在常量池中定位到一個類的符號引用,並且檢查這個符號引用代表的類是否已被載入、 解析和初始化過。 如果沒有,那必須先執行相應的類載入過程。 在類載入檢查通過後,接下來虛擬機器將為新生物

深入理解Java虛擬機器執行時資料區域

一.執行時資料區域有哪些? 首先,我們先來看一張圖: 如上面的圖所示,執行時記憶體區域主要分為:1.程式計數器,2.Java虛擬機器棧,3.本地方法棧,4.Java堆,5.方法區等等,下面就一個個來剖析一下。 二.這些區域都有哪些作用? 首先我們熟悉一下一個一般性的 Java 程式的

深入瞭解Java虛擬機器Java虛擬機器

        與程式計數器(想了解計數器看我上一篇部落格)一樣,Java虛擬機器棧也是執行緒私有的,他的生命週期與執行緒相同,虛擬機器棧描述的是Java方法執行的記憶體模式:每個方法在執行的同時都會建立一個棧幀用於儲存區域性變量表,運算元棧,動態連結,方法出

深入理解java虛擬機器自動記憶體管理機制(二)

垃圾收集演算法     java中的記憶體是交給虛擬機器管理的。要實現垃圾回收,必須考慮如下三個問題:     1. 哪些記憶體需要回收?     2. 什麼時候回收?     3. 怎麼回收?     對於第一點,往大了來說,是堆和方法區的記憶體需要回收。往具體了來說,是堆中哪些物件的記憶體可以回

深入理解java虛擬機器自動記憶體管理機制(三)

  各類垃圾收集器與GC日誌 (一)垃圾收集器   一、Serial收集器     最基本、歷史最悠久的收集器。使用複製演算法,用在新生代,通常老年代用Serial old配合。GC過程需要stop the world。適用於client模式下的虛擬機器。   二、ParNew收集器  

深入理解java虛擬機器自動記憶體管理機制(四)

記憶體分配與回收策略 (一)記憶體分配策略     給誰分配?分配到哪?是記憶體分配策略必須解答的問題。     java物件是分配的物件,往大方向來說,是分配到堆中,更細一點說,根據物件不同的特點分配到新生代和老年代區域。如果啟動了本地執行緒分配緩衝,就按執行緒優先在TLAB上分配。     一、新

Java虛擬機器Class檔案

對《深入理解Java虛擬機器》一書的類檔案結構進行總結(不關注細節,只總結): 一般一個類或者一個介面就對應一個class檔案,但有的類是用類載入器直接生成的,這些類就沒有class檔案 那麼,class檔案中都儲存了些什麼呢? 1.class檔案的版本資訊 用開頭4個位元組儲存,又

Java虛擬機器搜尋class檔案

Java命令 Java虛擬機器的工作是執行Java應用程式。和其他型別的應用程式一樣,Java應用程式也需要一個入口點,這個入口點就是我們熟知的main()方法。如果一個類包含main()方法,這個類就可以用來啟動Java應用程式,我們把這個類叫作主類。最簡單的Java程式是隻有一個main()方法的類,如

深入理解java虛擬機器JVM調優配置

轉載文章:http://blog.csdn.net/sivyer123/article/details/17139443 堆記憶體設定 原理 JVM堆記憶體分為2塊:Permanent Space 和 Heap Space。 Permanent 即 持久代(Pe

Java虛擬機器----瞭解“執行時資料區域”

一、 前言 對於Java程式設計師來說,在虛擬機器自動記憶體管理機制的幫助下,不再需要像C/C++那樣為每一個new操作去寫配對的delete/free程式碼,不容易出現記憶體洩漏和記憶體溢位問題。 由虛擬機器管理記憶體雖然方便了程式設計師,不過,一旦出現這方面的問題,我們也必須學會

深入理解Java虛擬機器虛擬機器位元組碼執行引擎

執行引擎是java虛擬機器最核心的組成部分之一。 物理機的執行引擎是建立在處理器、硬體、指令集和作業系統層面上的,而虛擬機器的執行引擎是由自己實現的,可以自行制定指令集與執行引擎的結構體系,並且能夠執行那些硬體不直接支援的指令集格式。 執行引擎在執行Java

Java虛擬機器札記-概述

今天開始學習Java虛擬機器。本文介紹Java虛擬機器的基礎知識。 JDK與JRE 在學習Java虛擬機器之前,我們先來複習下JRE和JDK的定義。JRE,Java Runtime Environment,意為Java執行時環境,包含Java虛擬機器和Jav

Java虛擬機器物件的建立及記憶體佈局

一、物件的建立 在語言層面上,物件的建立通常僅僅是一個new關鍵字而已,而當虛擬機器接收到一個new指令時,它會做如下的操作。 虛擬機器接收到一條new指令時,首先會去檢查這個指定的引數是否能在常量池中定位到一個類的符號引用,並且檢查這個符號引用代表的類是

Java虛擬機器垃圾收集器

一、物件引用 JDK1.2之前,Java中的引用定義很很純粹:如果reference型別的資料中儲存的數值代表的是另外一塊記憶體的起始地址,就稱這塊記憶體代表著一個引用。但在JDK1.2之後,Java對引用的概念進行了擴充,將其分為強引用(Strong Ref

深入理解java虛擬機器HotSpot虛擬機器探祕

一、物件的建立 虛擬機器遇到一條new指令時,首先將去檢查這個指令的引數是否能在常量池中定位到一個類的符號引用,並且檢查這個符號引用代表的類是否已被載入、解析和初始化過。如果沒有,則先執行相應的類載

Java虛擬機器String Pool

String Pool 是一塊用來專門存放String的堆記憶體。String類是一個特殊類,建立的物件是不可變的。建立方式可以使用 new 關鍵字建立,也可以使用雙引號 ” ” 建立。 String Pool 有助於為Java Runtime節省大量空間,

Java虛擬機器位元組碼執行引擎

1 概述 虛擬機器執行引擎是Java虛擬機器最核心的部分之一,其目的是實現:輸入位元組碼檔案,將位元組碼解析或等效處理後,執行並輸出結果。 其中兩種執行方式:解釋執行和編譯執行。 2 執行時棧幀結構 棧幀(Stack Frame)是用於支援虛擬機器進

Java虛擬機器自動記憶體管理機制

Java與C++之間有一堵由記憶體動態分配和垃圾收集技術所圍城的高牆,牆外面的人想進去,牆裡面的人卻想出來。Java憑藉虛擬機器自動記憶體管理機制,不需要為每一個new操作去配對free的操作,不容易出現記憶體洩露和記憶體溢位問題。但是我們還是很有必要了解虛擬機器是怎麼使用記