Java虚拟机和Dalvik(android)虚拟机的区别
生活随笔
收集整理的這篇文章主要介紹了
Java虚拟机和Dalvik(android)虚拟机的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先你必須對java虛擬機中常用的一款有深入的了解,比如Hotspot。
然后你再了解下android系統和Dalvik。
Dalvik 與 傳統jvm的差別還是很大的,總結來說,我個人把其歸納為三大類:
(1).傳統jvm是基于棧的,而Dalvik基于寄存器的。如果你了解Hotspot,你發現每一個方法對應棧幀,每一條指令都是基于棧的操作,基于棧,那么很多都是進棧和出棧的造作,那么造就了指令很多。基于寄存器就是數據直接存儲在寄存器上,然后直接讀取數據進行操作,沒有數據創建之后的進棧操作和出棧操作。
(2)傳統的jvm是執行class文件,而dalvik卻是執行dex文件,在android應用打包的時候,實質上是依據dx工具將class文件打包成dex文件(是class文件的壓縮),dex文件直接被dalvik加載。
(3).在android系統中,每一個app對應一個dalvik,一個應用,一個虛擬機實例,一個進程(所有android應用的線程都是對應一個linux線程,都運行在自己的沙盒中,不同的應用在不同的進程中運行。每個android dalvik應用程序都被賦予了一個獨立的linux PID(app_*))。常量池已被修改為只使用32位的索引,以 簡化解釋器。dalvik的堆和棧的參數可以通過-Xms和-Xmx更改。
總結
以上是生活随笔為你收集整理的Java虚拟机和Dalvik(android)虚拟机的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java程序是如何运行的「建议收藏」(j
- 下一篇: java美元兑换,(Java实现) 美元