日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于Dalvik虚拟机你需要知道的15个问题

發(fā)布時間:2023/12/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Dalvik虚拟机你需要知道的15个问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???Dalvik是Android系統(tǒng)中另一個重要的部分,包括虛擬機和一組重要的運行環(huán)境。它的設計非常巧妙,是個很好的一個手機終端的底層應用。本文就簡單介紹Dalvik相關的15個問題。

???????1、大部分jvm是基于棧的,而Dalvik是基于寄存器的。

?????? 基于棧的機器必須使用指令來載入棧上數(shù)據(jù),或是用指令來操縱數(shù)據(jù),因此指令集更為龐大。但是對于寄存器指令而言,又必須指定源地址和目的地址,因此,基于寄存器的jvm單個指令更大。

???????2、Dalvik一些特點:

?????? a)常量池32位索引

?????? b)默認棧12kb,3個頁,每頁4kb

?????? c)默認啟動堆2MB,最大值16MB,最小1MB

???????d)堆最大支持1024MB

?????? e)堆和棧的參數(shù)可以通過-Xms和-Xmx更改

???????3、所有的android線程都對應一個linux線程。每個Android Dalvik應用程序都運行在自己的沙盒里,不同的應用在不同的進程空間里運行。

???????4、Dalvik相當于java的JVM,.NET的CLI,Python、Perl、Ruby的Interpreter。Dalvik定義自己的字節(jié)碼為VM的指令。

???????5、目前Dalvik支持的功能:

?????? a).dex文件

?????? b)Dalvik指令集

?????? c)J2ME CLDC API

?????? d)多線程

???????6、Dalvik支持的平臺有:

?????? a)基于Unix的系統(tǒng)

???????b)Linux

?????? c)BSD

?????? d)Mac OSX

???????7、Dalvik 虛擬機實現(xiàn)位于 dalvik/目錄下,dalvik/vm是虛擬機的實現(xiàn)部分,被編譯為libdvm.so,而dalvik/libdex被編譯成libdex.a靜態(tài)庫作為dex工具庫;dalvik/dexdump是.dex文件的反編譯工具。虛擬機的可執(zhí)行程序位于dalvik/dalvikvm中,將被編譯為dalvikvm可執(zhí)行程序。

???????8、Dalvik需要的其他庫:

?????? a)OpenSSl 加密技術

?????? b)Zlib 免費的一般目的數(shù)據(jù)壓縮庫

???????c)ICU 字符編碼技術

?????? d)java包 包括java.nio,java.lang,java.util

?????? e)Apache Harmony classlibApache HttpClient

???????9、Dalvik虛擬機的運行庫大部分是用可移植的C寫的,除了JNI call bridge。

???????10、Dalvik不遵循java SE和java ME的API規(guī)范,所以不支持AWT或者Swing。

???????11、dalvik/vm/Dvm.mk 中會根據(jù)dvm_arch來選擇編譯的目標集體系結(jié)構(gòu)。

???????12、dx工具:位于dalvik/dx目錄,用于將字節(jié)碼轉(zhuǎn)換成.dex。

?????? 例:dx --dex --output=helloworld.dex helloworld.class

???????13、dexdump工具:位于dalvik/dexdump目錄,用于反編譯dex文件。

???????14、dex數(shù)據(jù)類型:

byte 8bit
ubyte 8bit
short 16bitlittle-endian
ushort 16bit little-endian
int 32bitlittle-endian
uint 32bitlittle-endian
long 64bitlittle-endian
ulong 64bitlittle-endian
sleb128 LEB128 variable-lengtha
uleb128 LEB128 variable-lengtha
uleb128p1 LEB128 variable-lengtha

???????LEB128類型:1~5個字節(jié)組成。所有字節(jié)組合在一起代表一個32位值。除最后一個字節(jié)最高標志位為0外,其他都為1,剩下的7位為有效負荷。有符號的LEB128的符號由最后一個字節(jié)的有效負荷最高位決定。具體算法在:dalvik/libdex/LEB128.h。

???????15、dex文件被映射到DexMapList,結(jié)構(gòu)體定義在dalvik/libdex/DexFile.h(c) 中。

總結(jié)

以上是生活随笔為你收集整理的关于Dalvik虚拟机你需要知道的15个问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。