1. 程式人生 > >虛擬機器簡介(一)

虛擬機器簡介(一)

跨平臺的真相:Java虛擬機器來做中介

虛擬機器:一臺虛擬的計算機。是一款軟體,用來執行一些列虛擬計算機指令,可分為:
  1. 系統虛擬機器:代表,Visual BoxVMware;
  2. 程式虛擬機器:代表,Java虛擬機器,它專門為執行單個計算機程式而涉及,在Java虛擬機器中執行的指令我們稱為Java位元組碼指令;
  3. 無法哪種虛擬機器,在上面執行的軟體都被限制與虛擬機器提供的資源中;
圖例:此圖顯示了同一個Java程式(Java位元組碼的集合),通過Java虛擬機器運行於各大系統,該程式以虛擬機器為中介,實現跨平臺; 主流虛擬機種類: OracleJRockitHotspot; IBMJ
9 嵌入式領域:KVMCDC/CLDCHotspot

JAVA虛擬機器規範

Java語言和Java虛擬機器有著密切的聯絡,但兩者是完全不同的內容; Java虛擬機器是一臺執行Java位元組碼的虛擬計算機,擁有獨立的執行機制,其執行的Java位元組碼也未必由Java語言編譯而成,像GroovyScala等語言生成的Java位元組碼也可以由Java虛擬機器執行; 可以在http://docs.oracle.com/javase/specs/jvms/se7/html/瀏覽虛擬機器規範全文;要實現自定義的Java虛擬機器就要參考這份規範;

數字編碼

整數在Java虛擬機器中,有byte,short,int,long

四種類型,使用補碼錶示。

浮點數在Java虛擬機器中,有floatdouble兩種,分別時32位和64位浮點數。目前使用IEEE754定義的浮點數格式;現在以float為例,說明浮點數的表示

IEEE754中,一個浮點數由3部分組成,分別是:符號位,指數位和尾數位。以32float為例,符號位佔1位,表示正負數,指數位佔8位,尾數位佔剩餘的23位:

  1. 以浮點數-5為例,內部表示為:
    1. 1 10000001 01000000000000000000000
    2. 符號位為1表示負數,指數位為10000001,表示129
  2. 尾數位為: 01000000000000000000000.因為e不全為0,故實際的尾數位為:
    1. 101000000000000000000000
  3. 尾數位表示2的指數次冪的和,每一位表示求和數列中的對應項是否為0,這裡表示:
    1. 1*20+0*2
      -1+1*2-2+0*-3+0*2-4+0*2-5......對應的關係,如下圖:
  4. 1 10000001 01000000000000000000000的值為:
    1. -1*2129-127*1*20+0*2-1+1*2-2+0*-3+0*2-4+0*2-5=-1*4*1.25=-1
  1. float還可以表示一些特殊數字:

其中,指數位全為1的表示無窮大和NaN等特殊數字。指數位全為0的為非規範化的浮點數

示例1:通過floatToRawIntBits()函式獲得一個單精度浮點數的IEEE754格式

float a =-1;
System.out.println(Integer.toBinaryString(Float.floatToRawIntBits(a)));
//執行結果為:1 10000001 01000000000000000000000
floatToRawIntBits()最終由native方法實現,原始碼:
JNIEXPORT jint JNICALLJava_java_lang_Float_floatToRawIntBits(JNIEnv*env,jclass unused,jfloat  v)
{
	union{
		int i;
		float f;
	} u;
	u.f = (float)v;
	return (jint)u.i;
}
//float內部,使用了C語言中的union自然實現這個轉換

相關推薦

虛擬機器簡介

跨平臺的真相:Java虛擬機器來做中介 虛擬機器:一臺虛擬的計算機。是一款軟體,用來執行一些列虛擬計算機指令,可分為: 系統虛擬機器:代表,Visual Box,VMware; 程式虛擬機器:代表,

讀書筆記《深入理解Java虛擬機器JAVA記憶體區域

  .結構圖來自原書 執行緒私有區域 程式計數器 虛擬機器棧 本地方法棧 所有執行緒共享 方法區 堆   程式計數器(執行緒私有) 是一塊較小的記憶體空間,可以看做是當前執行緒所執行的位元組碼的行號

【JVM】JAVA虛擬機器總結——什麼是JVM

前言:Java語言裡負責解釋執行位元組碼檔案的是Java虛擬機器,即JVM——Java Virtual Machine(Java虛擬機器)。執行Java程式的兩個步驟:由Java語言編寫的程式需要進過編

深入理解Java虛擬機器筆記

內容主要參考《深入理解Java虛擬機器(第2版)》 Java和C++之間有一堵由記憶體動態分配和垃圾收集技術所圍成的“高牆”,牆外面的人想進去,牆裡面的人想出來。 一 JVM執行時資料區 執行時資料區結構如下圖: 1 程式計數器:記憶體較小,執行緒執行的位元組碼的行號指

深入理解java虛擬機器系列:java記憶體區域與記憶體溢位異常

文章主要是閱讀《深入理解java虛擬機器:JVM高階特性與最佳實踐》第二章:Java記憶體區域與記憶體溢位異常 的一些筆記以及概括。 好了開始。如果有什麼錯誤或者遺漏,歡迎指出。 一、概述 先上一張圖 這張圖主要列出了Java虛擬機器管理的記憶體的幾個區域。 常有人

深入Java虛擬機器筆記:Java記憶體區域與記憶體溢位異常

1、程式計數器為很小的記憶體空間,為當前執行緒執行的位元組碼的行號指示器,通過改變計數器的值來選取下一條需要執行的位元組碼指令,迴圈、分支等基礎功能都是需要計數器來完成的 2、Java虛擬機器棧為Java方法執行的記憶體模型,每個方法被執行時都會同時建立棧

Ubuntu12.10 下搭建基於KVM-QEMU的虛擬機器環境

    經過幾年的發展,基於KVM-QEMU的虛擬化技術變得越來越成熟,redhat也已經初步形成了以此為基礎的虛擬化產品。同時其他的Linux平臺(如Ubuntu)也對此有了完善的支援方案,加上各類配套軟體的開源特性,以此技術為基礎搭建一套可用的虛擬機器環境變得不再困難。

Java虛擬機器原理

Java虛擬機器記憶體模型 Java虛擬機器模型是Java程式執行的基礎。為了能使程式正常執行,JVM將記憶體資料分為程式計數器、虛擬機器棧、本地方法棧、Java堆和方法區等部分,如下圖所示。現將各部分具體介紹如下: 1.程式計數器 程式計數器(Progr

【Oracle】Exadata虛擬機器配置

Exadata是Oracle軟硬結合的一體機,通過自己的機子不可能完全模擬出來,這裡搭建的虛擬機器只是一個簡單的、可以供我們學習Exadata的環境。 最簡單可以模擬的Exadata虛擬機器需要兩個節點,CELL節點和DB節點。 首先說一下CELL節點安裝介質: OEL5.

機器學習--------簡介

首先,人工智慧(Artificial Intelligence)有很多領域: 包括機器學習(Machine Learning)、專家系統、、進化計算、模糊邏輯、計算機視覺、自然語言處理、推薦系統等。 所以機器學習是一種實現人工智慧的技術,而另一個深度學習(Deep Learning)是一種實現機器學習的技

【java】簡介

編碼 http ... 設計 適合 不能 高度 代碼格式 操作系統 應用:web後端開發、android-app開發、大數據應用開發 學習:java會過時,但程序設計的思想不會過時 特點:1、面向對象,跨平臺,語法比c++簡單     2、以字節碼的形式運行在虛擬機上   

機器學習

無限 size mage 計算機 博客 對數 png 表示 獲得 對學習的定義 學習經驗E 完成任務T 績效指標P 對於某類任務T和性能度量P,如果一個計算機程序在完成T上以P來衡量完成的好壞,並隨著經驗E而自我完善,那麽我們稱這個計算機程序在從經驗E中學習

Linux簡介——

組成 mac os x 入門 不同 單機 默認 自己 dha 軟件 1。 常見操作系統 - 服務端操作系統 : linux、unix、windows server - 單機操作系統 : windows(dos 、ucdos、win95、win

我們一起學習Spring之Spring簡介

邏輯 style 發的 nfa 不同的 構建 john 局限 認識   首先聲明,我是一個spring初學者,寫這篇blog的目的是為了能和大家交流。文中不當之處還望大佬指出,不勝感激!   好了,現在我們開始進入正題。   很多小夥伴在學習Java的時候都會有人建議你去學

SpringCloud微服務簡介

一起 轉發 例如 sset 雲服務 心跳檢測 因此 靈活性 dubbo Spring Cloud簡單認識  微服務英文名稱Microservice,Microservice架構模式就是將整個Web應用組織為一系列小的Web服務。這些小的Web服務可以獨立地編譯及

flume簡介

gpo body events emp 簡單實例 buffers bind 通過 .sh 緒論:   本文的內容包括flume的背景、數據流模型、常見的數據流操作、flume agent啟動和flume agent簡單實例。參考文檔為flume官網的flume1.8.0 F

PowerPC中斷系統簡介

PowerPC 中斷1. PowerPC中斷系統簡介PowerPC處理器的中斷系統由兩部分組成,一是內核的中斷及異常的處理;二是中斷控制器。以P2020處理器為例,包括E500內核中斷及異常處理系統和OpenPIC中斷控制器。在E500內核中,包含兩種可以暫時中止處理器運行當前指令的事件、中斷和異常。其中,異

PCI簡介

PCIX86處理器系統簡介X86主板布局PCI是Peripheral Component Interconnect(外設部件互連標準)的縮寫,本文介紹x86處理器系統下PCI相關知識。x86主板圖如圖 1.1所示:圖 1.1 X86主板布局從圖中可以看出,靠近CPU的是北橋芯片(North Bridge),北

機器學習梯度下降算法的實現及過程分析

回歸 vnc 分布 AC HA 向量 med mar size 機器學習(一)梯度下降算法 因為算法最好能應用到實際問題中才會讓讀者感到它的真實的用處,因此首先我來描述一個實際問題(梯度下降算法用以幫助解決該問題):給定一個指定的數據集,比如由若幹某一

萬能的搜索--之簡介

log 問題 暴力 編程 深度優先 分數 分享 圖片 搜索問題 * 搜索可能是在 NOIP 中使用範圍最廣的算法,大部分的題目,在想不到正解的情況下,總能寫個搜索(我們稱之為的暴力)來得到部分的分數。 * 搜索,嚴格說不上是一個算法,是一種編程的思路:通過窮舉所有的可能性,