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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android高级第九讲--JVM 与Android Dalvik之间的异同

發布時間:2025/3/20 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android高级第九讲--JVM 与Android Dalvik之间的异同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


博客出自:http://blog.csdn.net/liuxian13183,轉載注明出處! All Rights Reserved !?


有些東西不是不知道,是還沒用到,所以才沒去仔細了解,昨天被問及這兩者之間的區別,回去研究了下,寫篇博客,大家相互探討一下。

剛開始學Java的時候,我們就學了JVM ,了解了它的工作原理,說到JVM,那就得說說Java的開發環境,jdk

jdk由三部分組成java language,java tools和jre 。


java language很好理解,就是java開發語言


java tools 是由常見的java,javac,javadoc,apt,jar,javap,jpda,jconsole,rmi,javaVisualVM,javaTI等工具組成


jre即java runtime environment,java運行環境,包括Deployment Technologies, User Interface Toolkits,Intergration Libraries,Other Base Libraries,Lang and Util Base Libraries,Java Virtual Machine,


Deployment Technologies又包含了Deployment,Java Web start,Java Plugin-in這些功能


User Interface Toolkits又包含了AWT,Swing,Java2D,Image IO ,Print Service,Sound等工具類


Intergration Libraries又包含了JDBC,JNDI等工具類


Other Base Libraries又包含了Beans,Input/Output,JNI,Math,NetWorking,Sercurity,Seriazation等工具類


Lang and Util Base Libraries又包含了Collections,Jar,Logging,Management,Versioning,Instrumentation,Zip等


Java Virtual Machine又包含了Java HostPotClient VM,Java HostPotServer VM兩種通信虛擬工具


JVM是java程序運行的基礎,是維持平臺運轉的管理者。

JVM為變量、對象、方法分配內存,變量和方法放棧(臨時儲存)里,對象放堆(持久數據)里面


基本回收算法
引用計數:比較古老的回收算法。原理是此對象有一個引用,即增加一個計數,刪除一個引用則減少一個計數。垃圾回收時,只用收集計數為0的對象。此算法最致命的是無法處理循環引用的問題。


標記-清除:此算法執行分兩階段。第一階段從引用根節點開始標記所有被引用的對象,第二階段遍歷整個堆,把未標記的對象清除。此算法需要暫停整個應用,同時,會產生內存碎片。


復制:此算法把內存空間劃為兩個相等的區域,每次只使用其中一個區域。垃圾回收時,遍歷當前使用區域,把正在使用中的對象復制到另外一個區域中。次算法每次只處理正在使用中的對象,因此復制成本比較小,同時復制過去以后還能進行相應的內存整理,不過出現“碎片”問題。當然,此算法的缺點也是很明顯的,就是需要兩倍內存空間。


標記-整理:此算法結合了“標記-清除”和“復制”兩個算法的優點。也是分兩階段,第一階段從根節點開始標記所有被引用對象,第二階段遍歷整個堆,把清除未標記對象并且把存活對象“壓縮”到堆的其中一塊,按順序排放。此算法避免了“標記-清除”的碎片問題,同時也避免了“復制”算法的空間問題。


增量收集:實施垃圾回收算法,即:在應用進行的同時進行垃圾回收。


分代:基于對對象生命周期分析后得出的垃圾回收算法。把對象分為年青代、年老代、持久代,對不同生命周期的對象使用不同的算法(上述方式中的一個)進行回收。現在的垃圾回收器(從J2SE1.2開始)都是使用此算法的。


JVM是通過jdk中Java.exe來完成,通過下面4步來完成JVM環境.?

1.創建JVM裝載環境和配置?

2.裝載JVM.dll?

3.初始化JVM.dll并掛界到JNIENV(JNI調用接口)實例?

4.調用JNIEnv實例裝載并處理class類。


總之從應用的層面上來講主要有三種回收方式,

詳見:Android高級開發第八講--粗略講述Java之軟引用、弱引用和虛引用

?

Android平臺的虛擬機是Dalivk,與JVM相比較,它是基于寄存器的,支持提前優化,編譯花費時間更短,允許多個虛擬機實例共存,分做不同的linux進程,可以防止一個崩潰,其他程序跟著不能使用。

其次它執行的是.dex字節碼,JVM執行的是.class字節碼

今天先講到這里,以后再遇到再詳細說明。

總之從應用的層面上來講主要有三種回收方式,

詳見:Android高級開發第八講--粗略講述Java之軟引用、弱引用和虛引用

?

總結

以上是生活随笔為你收集整理的Android高级第九讲--JVM 与Android Dalvik之间的异同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。