色噜噜人体337p人体 I 超碰97观看 I 91久久香蕉国产日韩欧美9色 I 色婷婷我要去我去也 I 日本午夜a I 国产av高清怡春院 I 桃色精品 I 91香蕉国产 I 另类小说第一页 I 日操夜夜操 I 久久性色 I 日韩欧在线 I 国产深夜在线观看 I 免费的av I 18在线观看视频 I 他也色在线视频 I 亚洲熟女中文字幕男人总站 I 亚洲国产综合精品中文第一 I 人妻丰满熟av无码区hd I 新黄色网址 I 国产精品真实灌醉女在线播放 I 欧美巨大荫蒂茸毛毛人妖 I 国产一区欧美 I 欧洲亚洲1卡二卡三卡2021 I 国产亚洲欧美在线观看三区 I 97精品无人区乱码在线观看 I 欧美妇人 I 96精品在线视频 I 国产人免费视频在线观看 I 91麻豆国产福利在线观看

Java虛擬機是什么

時間:2025-05-25 20:05:47 好文 我要投稿
  • 相關推薦

Java虛擬機是什么

  什么是Java虛擬機

  作為一個Java程序員,我們每天都在寫Java代碼,我們寫的代碼都是在一個叫做Java虛擬機的東西上執行的。但是如果要問什么是虛擬機,恐怕很多人就會模棱兩可了。在本文中,我會寫下我對虛擬機的理解。因為能力所限,可能有些地方描述的不夠欠當。如果你有不同的理解,歡迎交流。

  我們都知道Java程序必須在虛擬機上運行。那么虛擬機到底是什么呢?先看網上搜索到的比較靠譜的解釋:

  虛擬機是一種抽象化的計算機,通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java虛擬機有自己完善的硬體架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。

  這種解釋應該算是正確的,但是只描述了虛擬機的外部行為和功能,并沒有針對內部原理做出說明。一般情況下我們不需要知道虛擬機的運行原理,只要專注寫java代碼就可以了,這也正是虛擬機之所以存在的原因--屏蔽底層操作系統平臺的不同并且減少基于原生語言開發的復雜性,使java這門語言能夠跨各種平臺(只要虛擬機廠商在特定平臺上實現了虛擬機),并且簡單易用。這些都是虛擬機的外部特性,但是從這些信息來解釋虛擬機,未免太籠統了,無法讓我們知道內部原理。

  從進程的角度解釋JVM

  讓我們嘗試從操作系統的層面來理解虛擬機。我們知道,虛擬機是運行在操作系統之中的,那么什么東西才能在操作系統中運行呢?當然是進程,因為進程是操作系統中的執行單位。可以這樣理解,當它在運行的時候,它就是一個操作系統中的進程實例,當它沒有在運行時(作為可執行文件存放于文件系統中),可以把它叫做程序。

  對命令行比較熟悉的同學,都知道其實一個命令對應一個可執行的二進制文件,當敲下這個命令并且回車后,就會創建一個進程,加載對應的可執行文件到進程的地址空間中,并且執行其中的指令。下面對比C語言和Java語言的HelloWorld程序來說明問題。

  首先編寫C語言版的HelloWorld程序。

  [cpp] view plain copy#include

  #include

  int main(void) {

  printf("hello world

  ");

  return 0;

  }

  編譯C語言版的HelloWorld程序:

  [plain] view plain copygcc HelloWorld.c -o HelloWorld

  運行c語言版的HelloWorld程序:

  [plain] view plain copyzhangjg@linux:/deve/workspace/HelloWorld/src$ ./HelloWorld

  hello world

  gcc編譯器編譯后的文件直接就是可操作系統識別的二進制可執行文件,當我們在命令行中敲下 ./HelloWorld這條命令的時候, 直接創建一個進程, 并且將可執行文件加載到進程的地址空間中, 執行文件中的指令。

  作為對比, 我們看一下Java版HelloWord程序的編譯和執行形式。

  首先編寫源文件HelloWord.java :

  [java] view plain copypublic class HelloWorld {

  public static void main(String[] args) {

  System.out.println("HelloWorld");

  }

  }

  編譯Java版的HelloWorld程序:

  [java] view plain copyzhangjg@linux:/deve/workspace/HelloJava/src$ javac HelloWorld.java

  zhangjg@linux:/deve/workspace/HelloJava/src$ ls

  HelloWorld.class HelloWorld.java

  運行Java版的HelloWorld程序:

  [plain] view plain copyzhangjg@linux:/deve/workspace/HelloJava/src$ java -classpath . HelloWorld

  HelloWorld

  從上面的過程可以看到, 我們在運行Java版的HelloWorld程序的時候, 敲入的命令并不是 ./HelloWorld.class 。 因為class文件并不是可以直接操作系統識別的二進制可執行文件 。 我們敲入的是java這個命令。 這個命令說明, 我們首先啟動的是一個叫做java的程序, 這個java程序在運行起來之后就是一個JVM進程實例。

  上面的命令執行流程是這樣的:

  java命令首先啟動虛擬機進程,虛擬機進程成功啟動后,讀取參數“HelloWorld”,把他作為初始類加載到內存,對這個類進行初始化和動態鏈接(關于類的初始化和動態鏈接會在后面的博客中介紹),然后從這個類的main方法開始執行。也就是說我們的class文件不是直接被系統加載后直接在cpu上執行的,而是被一個叫做虛擬機的進程托管的。首先必須虛擬機進程啟動就緒,然后由虛擬機中的類加載器加載必要的class文件,包括jdk中的基礎類(如String和Object等),然后由虛擬機進程解釋class字節碼指令,把這些字節碼指令翻譯成本機cpu能夠識別的指令,才能在cpu上運行。

  從這個層面上來看,在執行一個所謂的java程序的時候,真真正正在執行的是一個叫做Java虛擬機的進程,而不是我們寫的一個個的class文件。這個叫做虛擬機的進程處理一些底層的操作,比如內存的分配和釋放等等。我們編寫的class文件只是虛擬機進程執行時需要的“原料”。這些“原料”在運行時被加載到虛擬機中,被虛擬機解釋執行,以控制虛擬機實現我們java代碼中所定義的一些相對高層的操作,比如創建一個文件等,可以將class文件中的信息看做對虛擬機的控制信息,也就是一種虛擬指令。

  編程語言也有自己的原理, 學習一門語言, 主要是把它的原理搞明白。 看似一個簡單的HelloWorld程序, 也有很多深入的內容值得剖析。

【Java虛擬機是什么】相關文章:

Java架構師的職責02-27

Java架構師的具體職責09-23

【優選】Java架構師的職責02-27

Java初級開發工程師的職責05-28

中級Java開發工程師的職責08-26

Java高級開發工程師的基本職責03-15

Java中高級開發工程師的職責08-26

生命是什么09-08

幸福是什么08-21

主站蜘蛛池模板: 色哟哟欧美精品免费视频 | 国产911情侣拍拍在线播放 | 熟女视频一区二区在线观看 | 天天射射综合 | 蜜桃久久av一区 | 黄色大片免费观看 | 亚洲美女视频一区二区三区 | 免费成人在线视频网站 | www.4hu95.com四虎 1024在线观看你懂的 | 精品爽片免费看久久 | 国产 日韩 另类 视频一区 | 操操操av | 污视频网址 | 伊人综合久久 | 亚洲gv白嫩小受在线观看 | 久草中文在线 | 亚洲ⅴ国产v天堂a无码二区 | 国产人妻精品一区二区三区 | 日韩国产毛片 | 色婷婷五月综合亚洲小说 | 日韩激情三级 | 无码三级av电影在线观看 | 亚洲成在线aⅴ免费视频 | 国产成人无码午夜视频在线观看 | 免费国产黄网站在线观看视频 | 天天综合婷婷 | 午夜三级a三级三点 | 中文字幕一区日韩精品欧美 | 精品国产成人一区二区 | 男女高潮喷水在线观看 | 国产精品久久久久久久午夜 | 免费无码一区二区三区a片 国产色综合视频 | 握住她的双乳不停呻吟 | 免费色av| 国产孩cao大人xxxx | 欧美亚洲国产第一精品久久 | 日韩毛片免费无码无毒视频观看 | 精品一区二区三区免费视频 | 国产美女视频91 | 亚洲一区二区视频在线观看 | 精品亚洲国产成人av在线小说 | 日韩av无码精品一二三区 | 竹内纱里奈一88av在线 | 国产精品视频一区二区三区, | 欧美成人性生活视频 | 亚洲欧洲日本精品专线 | 奇米影视7777久久精品人人爽 | 7777精品伊久久久大香线蕉 | 成人av一区二区免费播放 | 又色又湿又黄又爽又免费视频 | 国产av综合影院 | 日日摸夜夜添夜夜添精品视频 | 小婕子伦流澡到高潮h | 成年美女黄网站色大片免费看 | 亚洲日韩一区精品射精 | 亚洲一区激情 | 久久三级免费 | 色伊人网 | 精品久久久久一区二区国产 | 熟女精品视频一区二区三区 | 久久亚洲精品综合国产仙踪林 | 久久天天躁狠狠躁亚洲综合公司 | 久久性视频 | 少妇性影院爽爽爽爽爽爽 | 色又黄又爽18禁免费网站 | 欧美一级在线观看 | 爱情岛论坛极速福利亚洲速汇 | 最新地址在线观看 | 99久久无码一区人妻a片潘金莲 | 小13箩利洗澡无码视频免费网站 | av一级网站 | 亚洲天堂资源网 | 国内精品久久久久久影视8 99福利 | 欧美性大战久久久久久久蜜臀 | 黄色影视在线免费观看 | 亚洲精品一区二区三区四区手机版 | 日本一本免费一二区 | 午夜男女爽爽爽在线视频 | 69麻豆天美精东蜜桃传媒潘甜甜 | 国产91影院 | 日本做受高潮又黄又爽 | 日韩女同在线二区三区 | 国产午夜精品在线 | 国产成人8x人网站在线视频 | 丰满的岳乱妇一区二区三区 | 亚洲精品乱码久久久久久久久久久久 | 7777精品伊人久久久大香线蕉 | 懂色av加勒比av一区二区 | 免费国产黄色av | 欧美jizzhd精品欧美喷水 | 国产免费视频在线 | 国产av丝袜一区二区三区 | 国产精品玖玖资源站大全 | 天堂视频一区 | www.四虎在线观看 | 手机在线观看中文字幕 | 第一福利在线视频 | 无码免费一区二区三区免费播放 | 国产一区二区四区在线观看 |