探索Java工作原理之JVM內(nèi)存回收
你對(duì)JVM內(nèi)存回收的概念是否了解,這里和大家分享一下,為了提高Java語(yǔ)言的性能和健壯性,還引入了如垃圾回收機(jī)制等新功能,通過(guò)這些改進(jìn)讓Java具有其獨(dú)特的工作原理。
深入探索Java工作原理:JVM內(nèi)存回收
Java語(yǔ)言引入了Java虛擬機(jī),具有跨平臺(tái)運(yùn)行的功能,能夠很好地適應(yīng)各種Web應(yīng)用。同時(shí),為了提高Java語(yǔ)言的性能和健壯性,還引入了如垃圾回收機(jī)制等新功能,通過(guò)這些改進(jìn)讓Java具有其獨(dú)特的工作原理。
1.Java虛擬機(jī)
Java虛擬機(jī)(JavaVirtualMachine,JVM)是軟件模擬的計(jì)算機(jī),它可以在任何處理器上(無(wú)論是在計(jì)算機(jī)中還是在其他電子設(shè)備中)安全兼容地執(zhí)行保存在.class文件中的字節(jié)碼。Java虛擬機(jī)的“機(jī)器碼”保存在.class文件中,有時(shí)也可以稱之為字節(jié)碼文件。
Java程序的跨平臺(tái)特性主要是指字節(jié)碼文件可以在任何具有Java虛擬機(jī)的計(jì)算機(jī)或者電子設(shè)備上運(yùn)行,Java虛擬機(jī)中的Java解釋器負(fù)責(zé)將字節(jié)碼文件解釋成為特定的機(jī)器碼進(jìn)行運(yùn)行。因此在運(yùn)行時(shí),Java源程序需要通過(guò)編譯器編譯成為.class文件。
Java虛擬機(jī)的建立需要針對(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ī)。
2.無(wú)用內(nèi)存自動(dòng)回收機(jī)制
在程序的執(zhí)行過(guò)程中,部分內(nèi)存在使用過(guò)后就處于廢棄狀態(tài),如果不及時(shí)進(jìn)行回收,很有可能會(huì)導(dǎo)致內(nèi)存泄漏,進(jìn)而引發(fā)系統(tǒng)崩潰。在C++語(yǔ)言中是由程序員進(jìn)行內(nèi)存回收的,程序員需要在編寫程序時(shí)把不再使用的對(duì)象內(nèi)存釋放掉,這種人為管理內(nèi)存釋放的方法往往由于程序員的疏忽而致使內(nèi)存無(wú)法回收,同時(shí)也增加了程序員的工作量。而在Java運(yùn)行環(huán)境中,始終存在著一個(gè)系統(tǒng)級(jí)的線程,專門跟蹤內(nèi)存的使用情況,定期檢測(cè)出不再使用的內(nèi)存,并自動(dòng)進(jìn)行回收,避免了內(nèi)存的泄露,也減輕了程序員的工作量。
3.代碼安全性檢查機(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ǔ)言的生存。
【編輯推薦】
- JVM、JRE、JDK的區(qū)別和聯(lián)系
- 解決JVM最大內(nèi)存設(shè)置問(wèn)題
- 實(shí)例解析Linux平臺(tái)的JVM性能評(píng)測(cè)
- 詳解Tomcat配置JVM參數(shù)步驟
- 深入學(xué)習(xí)JVM內(nèi)存設(shè)置原理和調(diào)優(yōu)