jvm筆記1

zetaBiu!發表於2020-10-29

虛擬機器 virtual machine

虛擬計算機 ,分為系統虛擬機器和程式虛擬機器

  1. visual Box ,VMare
  2. java虛擬機器 專門為執行單個計算機程式而設計,

調優目的

減少gc full gc

java 虛擬機器

擁有獨立執行的機制,二進位制的執行環境

java 平臺上的多語言混合程式設計

特點

一次編譯 處處執行
自動記憶體管理
自動垃圾回收
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-GBQDTMKP-1603977976955)(en-resource://database/4949:1)][外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-9Ds9DBQq-1603977976959)(en-resource://database/4951:1)]
在這裡插入圖片描述

棧(執行緒) 區域性變數 一個方法對應一個棧幀記憶體區域

執行時資料記憶體模型

方法區 ()

常量 物件指向堆
靜態變數
類資訊

物件

區域 8 1 1

eden區
survivor
老年代

gc 垃圾收集

gc觸發stw
老年代滿了:FULL GC
OOM

stw

暫停執行緒 標記垃圾

GC Roots :可達性分析演算法

  1. 執行緒棧的本地變數
  2. 靜態變數
  3. 本地方法棧的變數
物件

物件頭
例項資料
對齊填充

程式計數器 (執行緒私有)

本地方法棧(執行緒私有)

與其他語言互動介面

棧 (執行緒私有)

執行緒

程式計數器

棧幀 方法

區域性變數表 物件指標指向堆的物件
運算元棧
動態連結: 記憶體位置
方法出口:返回位置

java 執行流程

在這裡插入圖片描述

java編譯器輸入的指令流基於棧的指令集架構

跨平臺、指令集小、指令多:執行效能比暫存器差

機制

物件動態年齡判斷
長期存活的物件將進入老年代
老年代空間分配擔保機制

jvm生命週期

虛擬機器啟動

引導類載入器(bootstrap class loader)建立一個初始類(initial class),這個類由虛擬機器具體實現指定

執行

真真正正執行一個java程式

退出

執行緒呼叫runtime類或system類的exit方法,或runtime類的halt方法,

英語

native 本地

命令

jps 列印程式
javap
thread+ 執行緒
jad +class
javap -v 類

調優工具

arthas
jvisualvm

eg

在這裡插入圖片描述

相關文章