- 相關(guān)推薦
Java工作原理
Java是一門面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,下面一起去了解一下Java工作原理吧,希望對(duì)大家有幫助!
Java語(yǔ)言引入了Java虛擬機(jī),具有跨平臺(tái)運(yùn)行的功能,能夠很好地適應(yīng)各種Web應(yīng)用。同時(shí),為了提高Java語(yǔ)言的性能和健壯性,還引入了如垃圾回收機(jī)制等的新功能,通過(guò)這些改進(jìn)讓Java具有其獨(dú)特的工作原理。
Java虛擬機(jī)(JVM)
Java虛擬機(jī)(Java Virtual Machine,JVM)是軟件模擬的計(jì)算機(jī)。JVM是Java平臺(tái)的核心,它可以在任何處理器上(無(wú)論是在計(jì)算機(jī)中還是在其他電子設(shè)備中)安全、兼容地執(zhí)行保存在.class文件中的字節(jié)碼。Java虛擬機(jī)的“機(jī)器碼”保存在.class文件中,有時(shí)也可以稱為字節(jié)碼文件。
Java虛擬機(jī)的簡(jiǎn)歷需要針對(duì)不同的軟硬件平臺(tái)來(lái)實(shí)現(xiàn),既要考慮處理器的型號(hào),也要考慮操作系統(tǒng)的種類。由此在SPARC結(jié)構(gòu)、X86結(jié)構(gòu)、MIPS和PPC等嵌入式處理芯片上,在UNIX、Linux、Windows和部分實(shí)時(shí)操作系統(tǒng)上都可以實(shí)現(xiàn)Java虛擬機(jī)。
為了讓編譯產(chǎn)生的字節(jié)碼能更好的解釋與執(zhí)行,把Java虛擬機(jī)分成了6個(gè)部分:JVM解釋器、JVM指令系統(tǒng)、寄存器、棧、存儲(chǔ)區(qū)和碎片回收區(qū)。
JVM解釋器:虛擬機(jī)處理字段碼的CPU。
JVM指令系統(tǒng):該系統(tǒng)和計(jì)算機(jī)很相似,一條指令由操作碼和操作數(shù)兩部分組成。操作碼為8位二進(jìn)制數(shù),主要是為了說(shuō)明一條指令的功能,操作數(shù)可以根據(jù)需要而定,JVM有256種不同的操作指令。
寄存器:JVM有自己的虛擬寄存器,這樣就可以快速地與JVM的解釋器進(jìn)行數(shù)據(jù)交換。為了功能的需要,JVM設(shè)置了4個(gè)常用的32位寄存器:pc(程序計(jì)數(shù)器)、optop(操作數(shù)棧頂指針)、frame(當(dāng)前執(zhí)行環(huán)境指針)和vars(指向當(dāng)前執(zhí)行環(huán)境中第一個(gè)局部變量的指針)。
JVM棧:是指令執(zhí)行時(shí)數(shù)據(jù)和信息存儲(chǔ)的場(chǎng)所的控制中心,它提供給JVM解釋器運(yùn)算所需要的信息。
存儲(chǔ)區(qū):JVM存儲(chǔ)區(qū)用于存儲(chǔ)編譯過(guò)的字節(jié)碼等信息。
碎片回收區(qū):JVM碎片回收是指將使用過(guò)的Java類的具體實(shí)例從內(nèi)存中進(jìn)行回收,這就使得開發(fā)人員避免自己編程控制內(nèi)存的麻煩和危險(xiǎn)。隨著JVM的不斷升級(jí),其碎片回收的技術(shù)和算法也更加合理。JVM 1.4.1版后產(chǎn)生了一種分代收集技術(shù),簡(jiǎn)單來(lái)說(shuō)就是依據(jù)對(duì)象在程序中生存的時(shí)間劃分成代,以此為標(biāo)準(zhǔn)進(jìn)行碎片回收。
無(wú)用內(nèi)存自動(dòng)回收機(jī)制
在程序的執(zhí)行過(guò)程中,部分內(nèi)存在使用過(guò)后就處于廢棄狀態(tài),如果不及時(shí)進(jìn)行回收,很有可能導(dǎo)致內(nèi)存泄露,進(jìn)而引發(fā)系統(tǒng)崩潰。在C++語(yǔ)言中是由程序員進(jìn)行內(nèi)存回收的,程序員需要在編寫程序時(shí)把不再使用的對(duì)象內(nèi)存釋放掉,這種人為管理內(nèi)存釋放的方法往往會(huì)因程序員的疏忽而致使內(nèi)存無(wú)法回收,同時(shí)也增加程序員的工作量。而在Java運(yùn)行環(huán)境中,始終存在著一個(gè)系統(tǒng)級(jí)的線程,專門跟蹤內(nèi)存的使用情況,定期檢測(cè)出不再使用的內(nèi)存,并自動(dòng)進(jìn)行回收,避免了內(nèi)存的泄露,也減輕了程序員的工作量。
代碼安全性檢查機(jī)制
安全和方便總是相對(duì)矛盾的。Java編程語(yǔ)言的出現(xiàn)使得客戶端計(jì)算機(jī)可以方便的從網(wǎng)絡(luò)中上傳或下載Java程序到本地計(jì)算機(jī)上運(yùn)行,但是如何保證該Java程序不攜帶病毒或沒(méi)有其他危險(xiǎn)目的呢?為了確保Java程序執(zhí)行的安全性,Java語(yǔ)言通過(guò)Applet程序來(lái)控制非法
程序的安全性,也就是有了它才確保了Java語(yǔ)言的生存。
【Java工作原理】相關(guān)文章:
Java原理面試題07-13
教你JAVA語(yǔ)言快速排序的原理10-04
深入解析hashmap,java實(shí)現(xiàn)原理08-08
java插入法排序原理06-03
冒泡排序的原理以及java代碼實(shí)現(xiàn)08-17
Java 隊(duì)列實(shí)現(xiàn)原理及簡(jiǎn)單實(shí)現(xiàn)代碼09-13