999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

JVM運行機制淺析

2017-05-08 16:31:15張衛
祖國 2017年7期
關鍵詞:跨平臺

摘要:java是當前比較火的一門編程語言,由于java的跨平臺性使得java的應用在越來越多的方面得以體現,在java大行其道的背后有著一個默默無聞的工作角色,這個角色就是java虛擬機——JVM,在本文中對JVM的運行過程做了一些研究,并綜合闡述了JVM的運行部件和運行機制。

關鍵詞:JVM java虛擬機 跨平臺 面向對象編程

Java因為其良好的跨平臺性,得到越來越多程序員的喜歡,同時隨著智能化家居的日益普及,java已經從開發的神壇走向平常百姓身邊。無時無刻我們的身邊都有java設備的運行,網絡電視中的android平臺,運行在其上的各種APP都是java運行的結果,車載系統已經從原先最早的嵌入式形式走向現在更具體的獨立系統階段,裝上android系統,各種應用便可以進行拓展,不得不說,java已經是我們親密的伙伴和朋友。但是在此不得不說,一個非常重要的幕后英雄,JVM(java虛擬機Java Virtual Machine)。

總所周知,操作系統封裝了底層的硬件設備,為人們使用計算機設備提供了人性化接口,為編程提供了各種API調用接口,但是各種操作系統在給人們提供便利的同時,又因為彼此的不同,給開發應用系統帶來一定的阻礙,因為針對一種系統的應用要運行在另外一個系統上的話,必然要在此開發針對另外系統的應用,增加了人們的開發工作量。為了解決這一問題,Sun公司開發了java語言,當然其初衷并非如此,但是確實也達到了這樣的目的,至于其初衷在此不做討論。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。JVM是java的核心和基礎,它是建立在java編譯器和操作系統平臺之間的虛擬電腦,或者狹義的理解為虛擬處理器,其運行基于下層操作系統和硬件平臺通過軟件來實現的抽象的計算機。java編譯器只需根據JVM編譯即可,程序員可以根據統一的標準去編寫程序,讓更做的重點放在工作流和業務流上。編譯器只需生成JVM能理解的代碼或者字節碼文件即可,JRE(java運行環境)將每一條指令翻譯成不同平臺的機器碼,保證其在不同平臺上的運行。

一個程序從源代碼到運行的執行過程如下:

1.編寫java源文件。

2.Javac編譯器將源文件編譯成class文件。

3.加載.class文件。

然后虛擬機采用如下圖所示的處理過程執行程序:

下面對JVM的運行組成做個說明:

1.JVM指令系統

JVM是對底層系統的抽象,同計算機指令系統一樣,JVM提供指令系統,其指令也是由操作碼和操作數兩部分構成,JVM操作碼是8位二進制數,所以JVM提供醉倒256種指令,已經使用160多種。

2.JVM寄存器

在普通的操作系統中,CPU包含一定的寄存器,JVM也設置了幾種常用的寄存器,PC程序計數器,OPTOP操作數棧頂指針,FRAM當前執行環境指針,VARS指向當前執行環境第一個局部變量的指針。其中所有 寄存器都是32位,PC記錄程序的執行,其他幾個寄存器記錄指向java棧區的指針。

其中,PC程序計數器可以理解為當前線程所執行的字節碼行號指示器,在JVM概念模型中,字節碼解釋器通過改變計數器的值來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理等都依賴于程序計數器。

3.堆棧結構以及存儲區

JVM主要用棧來存儲信息,當JVM得到.class的字節碼后便為該代碼中一個類的每個方法創建一個包含局部變量、執行環境、操作數的棧框架。,VARS寄存器指向局部變量中第一個變量的位置。操作數棧主要用于保存運算所需要的操作數以及運算的結果,執行的時候從棧頂彈出操作數進行運算,最后將運算結果壓人棧頂。解釋器具體承擔實例空間的分配工作,解釋器為實例分配完存儲空間后就可以記錄該實例所占用的內存區域的使用,一旦對象使用完畢就將其回收到堆中。也就是使用NEW語句構造出來的對象最終要存在堆上,如果不再使用則由垃圾回收機制回收,即堆是java垃圾收集器管理的主要區域,所以很多時候它稱為GC區。為了存放類名稱、方法和字段名稱以及串常量,這些元素存放在JVM中的常量緩沖池,Java方法的字節碼則存放在方法區。

4.垃圾回收機制

使用過C++編程的人一定會為C++中內存泄漏而苦惱,因為C++運行環境中,對象所占的內存在程序結束后不會主動釋放,其釋放必須通過程序員調用代碼釋放,而在Java中有完善的垃圾回收機制,在對象引用沒有指向原先分配給某個對象的內存時,便忍者這塊內存便成是垃圾。JVM的一個系統級線程會自動釋放該內存塊。垃圾回收意味著程序不再需要的對象是“無用信息”,這些信息將被丟棄。當一個對象不再被引用的時候,內存回收它占領的空間,以便空間被后來的新對象使用。事實上,除了釋放沒用的對象,垃圾回收也可以清除內存記錄碎片。由于創建對象和垃圾回收器釋放丟棄對象所占的內存空間,內存會出現碎片。碎片是分配給對象的內存塊之間的空閑內存洞。碎片整理將所占用的堆內存移到堆的一端,JVM將整理出的內存分配給新的對象。垃圾回收能自動釋放內存空間,減輕編程的負擔。這使Java 虛擬機具有一些優點。首先,它能使編程效率提高。在沒有垃圾回收機制的時候,可能要花許多時間來解決一個難懂的存儲器問題。在用Java語言編程的時候,靠垃圾回收機制可大大縮短時間。其次是它保護程序的完整性,垃圾回收是Java語言安全性策略的一個重要部份。

經常有人說java的執行效率低,畢竟因為java是在底層的基礎之上做了一層封裝,其實現在經過JVM的優化,只要站在底層運行的角度去編寫代碼、優化代碼和其他編譯性程序語言相比,這種差距也越來越小,相比于JVM帶來的極大便利,這點差距又算得了什么呢。

(作者簡介:張衛,碩士研究生學歷,計算機科學與技術專業,銅仁幼兒師范高等專科學校講師,研究方向有:網格計算,計算機軟件與程序設計,多年從事一線教育工作和知名大學計算機實訓培訓工作。)

猜你喜歡
跨平臺
跨層級網絡、跨架構、跨平臺的數據共享交換關鍵技術研究與系統建設
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
潛力雙跨平臺:進階:誰將跨入下一個“十大”?
跨平臺APEX接口組件的設計與實現
測控技術(2018年9期)2018-11-25 07:44:58
基于C++語言的跨平臺軟件開發的設計
數碼世界(2017年12期)2017-12-28 15:45:13
基于C++語言的跨平臺軟件開發
移動互聯網應用跨平臺開發
一種虛擬現實應用程序跨平臺方法的研究
基于QT的跨平臺輸電鐵塔監控終端軟件設計與實現
基于OPC跨平臺通信的電機監測與診斷系統
主站蜘蛛池模板: 在线免费观看AV| 欧美高清国产| 91精品国产自产在线老师啪l| 久久青草精品一区二区三区| 4虎影视国产在线观看精品| 国产无人区一区二区三区| 国产在线拍偷自揄拍精品| 香蕉久人久人青草青草| 久久动漫精品| 伊人查蕉在线观看国产精品| 99r在线精品视频在线播放| 午夜激情婷婷| 波多野结衣视频网站| 九色视频一区| 无码国产伊人| 国产成人精品一区二区不卡| 中文字幕在线日韩91| 久久精品国产精品青草app| 国产精品美女免费视频大全| 中文字幕在线免费看| 亚洲伊人电影| 国产精品短篇二区| 伊人婷婷色香五月综合缴缴情| 国产精品久久久久久影院| 91精品福利自产拍在线观看| 免费无码网站| 欧美亚洲激情| 亚洲国产高清精品线久久| 久久精品只有这里有| 国产你懂得| 成人中文字幕在线| 国产成人综合在线观看| 欧美国产另类| 91在线无码精品秘九色APP| 欧美无遮挡国产欧美另类| 亚洲一区二区三区国产精品 | 亚洲国产在一区二区三区| 午夜少妇精品视频小电影| 欧美丝袜高跟鞋一区二区| 国产麻豆aⅴ精品无码| 国产69精品久久久久孕妇大杂乱| 无码福利视频| 成人综合网址| 日韩在线1| 91久久偷偷做嫩草影院| 久久国产免费观看| 无码国产伊人| 色噜噜综合网| 精品国产网| 久久国产香蕉| 一本色道久久88综合日韩精品| 国产亚洲一区二区三区在线| 国产成人精品视频一区二区电影| 亚洲午夜国产片在线观看| 亚洲第一综合天堂另类专| 97超碰精品成人国产| 国内99精品激情视频精品| 久久性妇女精品免费| 99精品免费在线| 亚洲第一福利视频导航| 亚洲天堂视频在线观看免费| 中文字幕人成人乱码亚洲电影| 亚洲熟女偷拍| 伊人狠狠丁香婷婷综合色| 国产亚洲精品自在线| 国产成人一区| 欧美在线一级片| 国产福利影院在线观看| 亚洲三级影院| 国产激爽大片高清在线观看| 久久永久免费人妻精品| 日本高清有码人妻| 成人第一页| 福利视频一区| 中国国产一级毛片| 婷婷中文在线| 青青国产视频| 久久精品国产在热久久2019| 亚洲视频影院| 97在线公开视频| 亚洲AⅤ综合在线欧美一区| 国产成人无码Av在线播放无广告|