java中JVM虛擬機內存模型詳細説明
以下是本站小編為大家收集的java中JVM虛擬機內存模型詳細説明內容,歡迎閲讀學習!
JVM的內部結構如下圖:
java中JVM虛擬機內存模型詳細説明 - 天涯草 - 天涯草
一個優秀Java程序員,必須瞭解Java內存模型、GC工作原理,以及如何優化GC的性能、與GC進行有限的交互,有一些應用程序對性能要求較高,例如嵌入式系統、實時系統等,只有全面提升內存的管理效率,才能提高整個應用程序的性能。
本文將從JVM內存模型、GC工作原理,以及GC的幾個關鍵問題進行探討,從GC角度提高Java程序的性能。
1 java內存分為:
程序計數器(當前線程所執行字節碼的行號指示器,字節碼解釋器要通過改變這個計數器的值來選擇下一條字節碼指令,分支、循環、異常處理等。每條線程都有一條獨立的程序計數器,屬於線程私有的內存區)、
java虛擬機棧(也是線私有的,存儲局部變量、操作棧,每個方法執行時創建一個棧幀,執行過程就是棧的出棧入棧操作)、
本地方法棧(執行native方法)、
年輕代堆(eden、from survivor、to survivor)、年老代堆(經過幾次垃圾回收,保存下來的)、
持久代堆(也叫方法區,保存常量池和類型數據信息,不會被回收)、
直接內存(使用native方法直接分配堆外內存,再通過堆內的DirectByteBuffer作為這塊內存的引用進行操作)
2 對象訪問有兩種:通過句柄池和直接通過指針,句柄池的好處是垃圾回收後,不需要改變對象引用,只要改變句柄引用;直接指針的好處是效率較高。
引用《深入java虛擬機第二章》
解釋了minor gc和major gc,和兩個survivor區之於複製收集算法的意義
3 jvm內存機制
java內存中的四種引用解析,強引用、弱引用、軟引用、虛引用
-
40個Java多線程問題總結
Java多線程是什麼Java提供的併發(同時、獨立)處理多個任務的機制。多個線程共存於同一JVM進程裏面,所以共用相同的內存空間,較之多進程,多線程之間的通信更輕量級。依我的理解,Java多線程完全就是為了提高CPU的利用率。Java的線程有4種狀態,新建(New)、運行(Runnabl...
-
Java 正則表達式
Java是一門編程語言,那麼大家知道Java正則表達式是怎樣的呢?下面一起來看看!Java正則表達式正則表達式定義了字符串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式並不僅限於某一種語言,但是在每種語言中有細微的差別。正則表達式實例一個字符串其...
-
如何學好Java語言編程
決定好想學什麼編程語言了嗎,現在就讓我們開始學習吧。所有你需要做的就是打開一本書,然後開始閲讀,是這樣的嗎?不全是這樣的。learn-first我會給出學習第一門編程語言的理想方法佈局,你不僅應該學習這個佈局方法,還應該享受精通它——如果不能掌握的話。學習第一門...
-
計算機二級考試Java精選訓練題
下面是應屆畢業生考試網小編搜索整理的計算機二級考試Java精選訓練題,希望對大家有所幫助。[簡答題]本題中,在下畫線上填寫代碼,指定變量b為字節型,變量f為單精度實型,變量l為64位整型。publicclassjaval{publicstaticvoidmain(String[-]args){b=49;f=8.9f;l=0xfedl...