Class文件格式概述
class文件是一種8位字節(jié)的二進制流文件啡邑, 各個數(shù)據(jù)項按順序緊密的從前向后排列嗓节, 相鄰的項之間沒有間隙胳徽, 這樣可以使得class文件非常緊湊鸭你, 體積輕巧, 可以被JVM快速的加載至內(nèi)存剩胁, 并且占據(jù)較少的內(nèi)存空間诉植。 我們的Java源文件, 在被編譯之后昵观, 每個類(或者接口)都單獨占據(jù)一個class文件晾腔, 并且類中的所有信息都會在class文件中有相應(yīng)的描述, 由于class文件很靈活啊犬, 它甚至比Java源文件有著更強的描述能力灼擂。
一下轉(zhuǎn)自:?http://blog.csdn.net/szwangdf/article/details/25611781
由虛擬機中的類加載器加載必要的class文件,包括jdk中的基礎(chǔ)類(如String和Object等)觉至,然后由虛擬機進程解釋class字節(jié)碼指令剔应,把這些字節(jié)碼指令翻譯成本機cpu能夠識別的指令,才能在cpu上運行康谆。
從這個層面上來看领斥,在執(zhí)行一個所謂的java程序的時候,真真正正在執(zhí)行的是一個叫做Java虛擬機的進程沃暗,而不是我們寫的一個個的class文件月洛。這個叫做虛擬機的進程處理一些底層的操作,比如內(nèi)存的分配和釋放等等孽锥。我們編寫的class文件只是虛擬機進程執(zhí)行時需要的“原料”嚼黔。這些“原料”在運行時被加載到虛擬機中,被虛擬機解釋執(zhí)行惜辑,以控制虛擬機實現(xiàn)我們java代碼中所定義的一些相對高層的操作唬涧,比如創(chuàng)建一個文件等,可以將class文件中的信息看做對虛擬機的控制信息盛撑,也就是一種虛擬指令碎节。
https://www.douban.com/note/346334860/ ? ?jvm到底是什么?豆瓣
http://blog.csdn.net/zhoudaxia/article/details/26454421/ ?深入jvm內(nèi)幕抵卫。