java虛擬機(jī)是做什么用的
為了能夠在不同的平臺支持java的語言,我們需要一種輔助機(jī)制進(jìn)行翻譯,所以java虛擬機(jī)就誕生了,也就是平時所說的JVM。能夠?qū)ava語言進(jìn)行翻譯,然后適應(yīng)于其他的平臺。下面窩們就JVM的概念,與其他機(jī)制的關(guān)系、設(shè)置參數(shù)帶來介紹,然后講解其中的一個重點(diǎn)知識點(diǎn)。
1.概念
JVM是java上的一個虛構(gòu)出來的計(jì)算機(jī),是一個位于Java與操作系統(tǒng)之間的中間態(tài)。有自己完善的硬件結(jié)構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。
2.JVM、JRE和JDK的關(guān)系

3.設(shè)置JVM內(nèi)存的參數(shù)有四個
-Xmx Java Heap最大值,默認(rèn)值為物理內(nèi)存的1/4,最佳設(shè)值應(yīng)該視物理內(nèi)存大小及計(jì)算機(jī)內(nèi)其他內(nèi)存開銷而定;
-Xms Java Heap初始值,Server端JVM最好將-Xms和-Xmx設(shè)為相同值,開發(fā)測試機(jī)JVM可以保留默認(rèn)值;
-Xmn Java Heap Young區(qū)大小,不熟悉最好保留默認(rèn)值;
-Xss 每個線程的Stack大小,不熟悉最好保留默認(rèn)值
4.常用知識點(diǎn)
堆(heap)與棧(stack)
堆和棧是程序運(yùn)行的關(guān)鍵,很有必要它他們的關(guān)系說清楚。
在java中,Main函數(shù)就是棧的起始點(diǎn),也是程序的起始點(diǎn)。程序要運(yùn)行總是有一個起點(diǎn)的(程序執(zhí)行的入口)。
棧幀相關(guān)
int i=0; i=i++; sout(i);//為什么i還等于0?
java虛擬機(jī)定義:
虛擬機(jī)是一種抽象化的計(jì)算機(jī),通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。Java虛擬機(jī)有自己完善的硬體架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java虛擬機(jī)屏蔽了與具體操作系統(tǒng)平臺相關(guān)的信息,使得Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺上不加修改地運(yùn)行。
所謂的java虛擬機(jī),就是一臺虛擬的機(jī)器。它是一款軟件,用來執(zhí)行一系列虛擬計(jì)算機(jī)指令,大體上虛擬機(jī)可以分為系統(tǒng)虛擬機(jī)和程序虛擬機(jī)。visual Box、VMare就屬于系統(tǒng)虛擬機(jī)。他們完全是對物理計(jì)算機(jī)的仿真,提供一個可運(yùn)行完整操作系統(tǒng)的軟件平臺。而java虛擬機(jī)就是典型程序虛擬機(jī),它專門為執(zhí)行單個計(jì)算機(jī)程序而設(shè)計(jì),在java虛擬機(jī)中執(zhí)行的指令我們稱之為java字節(jié)碼指令。java發(fā)展到今天,出現(xiàn)了很多虛擬機(jī),最初sun使用的叫Classic的java虛擬機(jī),到現(xiàn)在使用最廣泛的是HotSpot虛擬機(jī),除了sun以外還有BEA的JRockit,目前JRockit和HotSpot都被甲骨文公司收入旗下,大有整合的趨勢。
到此這篇關(guān)于java虛擬機(jī)是做什么用的的文章就介紹到這了,更多相關(guān)java虛擬機(jī)是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java虛擬機(jī)之類加載
- java虛擬機(jī)之JVM調(diào)優(yōu)詳解
- Java虛擬機(jī)內(nèi)存區(qū)域劃分詳解
- 概述java虛擬機(jī)中類的加載器及類加載過程
- 深入了解Java虛擬機(jī)棧以及內(nèi)存模型
- 淺析Java虛擬機(jī)詳解之概述、對象生存法則
- Java跨平臺原理與虛擬機(jī)相關(guān)簡介
- java虛擬機(jī)jvm方法區(qū)實(shí)例講解
- java虛擬機(jī)鉤子關(guān)閉函數(shù)addShutdownHook的操作
- 詳解Java 虛擬機(jī)垃圾收集機(jī)制
- Java虛擬機(jī)使用jvisualvm工具遠(yuǎn)程監(jiān)控tomcat內(nèi)存
- Java虛擬機(jī)常見內(nèi)存溢出錯誤匯總
- Java虛擬機(jī)執(zhí)行引擎知識總結(jié)
- Java啟用Azure Linux虛擬機(jī)診斷設(shè)置
- Java虛擬機(jī)內(nèi)存溢出與內(nèi)存泄漏
- java虛擬機(jī)創(chuàng)建失敗的原因整理
- Java內(nèi)存模型中的虛擬機(jī)棧原理分析
- Java基礎(chǔ)之創(chuàng)建虛擬機(jī)對象的過程詳細(xì)總結(jié)
相關(guān)文章
java中用數(shù)組實(shí)現(xiàn)環(huán)形隊(duì)列的示例代碼
這篇文章主要介紹了java中用數(shù)組實(shí)現(xiàn)環(huán)形隊(duì)列的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
maven自動將源碼打包并發(fā)布的實(shí)現(xiàn)步驟
maven-source-plugin 提供項(xiàng)目自動將源碼打包并發(fā)布的功能,在需要發(fā)布源碼項(xiàng)目的 pom.xml 文件中添加即可,本文就來介紹一下如何設(shè)置,感興趣的可以了解一下2023-11-11
Java?CyclicBarrier錯誤使用的實(shí)例
文章描述了一個Java程序使用CyclicBarrier實(shí)現(xiàn)兩個線程交替打印字母和數(shù)字時遇到的問題,由于線程執(zhí)行順序不當(dāng),導(dǎo)致輸出結(jié)果與預(yù)期不符,通過調(diào)整線程的等待和打印順序,解決了問題,文章還提供了一個控制流圖來詳細(xì)解釋修改前后的程序邏輯2025-01-01
關(guān)于@OnetoMany關(guān)系映射的排序問題,使用注解@OrderBy
這篇文章主要介紹了關(guān)于@OnetoMany關(guān)系映射的排序問題,使用注解@OrderBy,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Java如何實(shí)現(xiàn)kaptcha網(wǎng)頁驗(yàn)證碼驗(yàn)證
在做關(guān)于SSM項(xiàng)目之商鋪系統(tǒng)時,了解到了kaptcha實(shí)現(xiàn)網(wǎng)頁驗(yàn)證碼驗(yàn)證,感覺就很有趣,所以便開始學(xué)習(xí)記錄了起來,復(fù)制粘貼即可用2025-01-01
Spring boot調(diào)用Oracle存儲過程的兩種方式及完整代碼
這篇文章主要給大家介紹了關(guān)于Spring boot調(diào)用Oracle存儲過程的兩種方式及完整代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

