Java程序運行的過程是這樣的:
類加載器(class loader)加載程序運行所需要的所有類,它通過區(qū)分本機文件系統(tǒng)的類和網(wǎng)絡(luò)系統(tǒng)導入的類增加安全性,這可以限制任何的特洛伊木馬程序,因為本機類總是先被加載,一旦所有的類被加載完,執(zhí)行文件的內(nèi)存劃分就固定了,在這個時候特定的內(nèi)存地址被分配給對應的符號引用,查找表(lookuo table)也被建立,由于內(nèi)存劃分發(fā)生在運行時,解釋器在受限制的代碼區(qū)增加保護防止未授權(quán)的訪問;然后字節(jié)碼校驗器(byte code verifier)進行校驗,主要執(zhí)行下面的檢查:類符合JVM規(guī)范的類文件格式,沒有違反訪問限制,代碼沒有造成堆棧的上溢或者下溢,所有操作代碼的參數(shù)類型都是正確的,沒有非法的數(shù)據(jù)類型轉(zhuǎn)換(例如將整型數(shù)轉(zhuǎn)換成對象類型)發(fā)生;校驗通過的字節(jié)碼被解釋器(interpreter)執(zhí)行,解釋器在必要時通過運行時系統(tǒng)執(zhí)行對底層硬件的合適調(diào)用。后三個答案是SL275中的原話
類加載器(class loader)加載程序運行所需要的所有類,它通過區(qū)分本機文件系統(tǒng)的類和網(wǎng)絡(luò)系統(tǒng)導入的類增加安全性,這可以限制任何的特洛伊木馬程序,因為本機類總是先被加載,一旦所有的類被加載完,執(zhí)行文件的內(nèi)存劃分就固定了,在這個時候特定的內(nèi)存地址被分配給對應的符號引用,查找表(lookuo table)也被建立,由于內(nèi)存劃分發(fā)生在運行時,解釋器在受限制的代碼區(qū)增加保護防止未授權(quán)的訪問;然后字節(jié)碼校驗器(byte code verifier)進行校驗,主要執(zhí)行下面的檢查:類符合JVM規(guī)范的類文件格式,沒有違反訪問限制,代碼沒有造成堆棧的上溢或者下溢,所有操作代碼的參數(shù)類型都是正確的,沒有非法的數(shù)據(jù)類型轉(zhuǎn)換(例如將整型數(shù)轉(zhuǎn)換成對象類型)發(fā)生;校驗通過的字節(jié)碼被解釋器(interpreter)執(zhí)行,解釋器在必要時通過運行時系統(tǒng)執(zhí)行對底層硬件的合適調(diào)用。后三個答案是SL275中的原話