JVM 概述及重點了解

首先我們需要了解幾個重要概念

JAVA:一種編程語言,提供簡單的API

JDK:提供編程開發工具包,編程語言規範,編譯器,解釋器等。

JRE:java語言別寫出來的代碼運行的環境。

JVM:JRE中的核心就是JVM (java虛擬機),JAVA程序運行中JVM中。JVM運行在操作系統的上面,操作系統爲JVM提供cpu,內存,網絡帶寬等。

JMM: JAVA MEMORY MODE 內存模型

一、JVM三大核心

(1)jvm類加載機制 (2) jvm運行時數據區(重點) (3)jvm垃圾回收(重點)

1.1 jvm 類加載機制

將我們寫的java文件編譯成class文件後,在jvm啓動或者類運行時由類加載器將class文件加載到內存中。

1.2jvm 運行時數據區(內存區)

是JVM在運行的時候操作所分配的內存區,包括五個部分:方法區,堆,java棧,本地方法棧,程序計數器。

一個jvm(進程)中可以運行多個線程,線程之間可以共享一些成員變量,綠色的部分(方法區和堆)就是線程間共享的數據,黃色是各個線程私有的,每個線程都具有一個java棧,本地方法棧,程序計數器。各個線程間不能訪問的。

1.3 執行引擎:負責執行class文件中的字節碼指令。

二. JAVA內存結構圖

JAVA內存內存結構主要有三大塊:方法區,堆內存,棧內存。

堆內存:是java內存中最大的一塊分爲年輕代和年老代(如果分成三部分年輕代、年老代,永久代(在有的版本中方法區就是永久帶)),其中年輕代又分爲:Eden,FromSpace(Survivor1),ToSpace(Survivor2),佔比8:1:1

對於一個JVM我們通常給定兩個概念:一個堆內存,一個棧內存。

堆內存:線程共享

    堆:年輕代,年老代

   方法區:永久代

棧內存:線程私有

   java棧,本地方法區棧,程序計數器

方法區存儲類信息,常量,靜態變量等信息,線程共享,爲與Java堆區分開,方法區的別名也叫(Non-heap非堆)

二,如何根據參數來控制JVM運行時數據區的大小

 三.參數配置名稱

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章