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

歡迎訪問 生活随笔!

生活随笔

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

Android

《Android虚拟机》----虚拟机概述

發布時間:2025/3/15 Android 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Android虚拟机》----虚拟机概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

No1:

虛擬機是指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離的環境中的完整計算機系統。

No2:

Java虛擬機由如下五個部分組成:一組指令集、一組寄存器、一個棧、一個無用單元收集堆、一個方法區域。

No3:

Java虛擬機中有4種寄存器

1)pc:Java程序計數器

2)optop:指向操作數棧頂端的指針

3)frame:指向當前執行方法的執行環境的指針

4)vars:指向當前執行方法的局部變量區第一個變量的指針

No4:

Java虛擬機的棧有三個區域:局部變量區、運行環境區、操作數區

No5:

.dex文件格式會把所有的.class文件內容整合到一個文件中。這樣,除了減少整體的文件尺寸,I/O操作,也提高了類的查找速度。原來每個類文件中的常量池,在.dex文件中由一個常量池來管理。

No6:

Zygote是一個虛擬機進程,同時也是一個虛擬機實例的孵化器,每當系統要求執行一個Android應用程序,Zygote就會孵化出一個子進程來執行該應用程序。這樣做的好處顯而易見:Zygote進程是在系統啟動時產生的,它會完成虛擬機的初始化,庫的加載,預置類庫的加載和初始化等操作,而在系統需要一個新的虛擬機實例時,Zygote通過復制自身,最快速地提供一個系統。另外,對于一些只讀的系統庫,所有虛擬機實例都和Zygote共享一塊共享區域,這樣可以大大節省內存開銷。

No7:

系統嘗試預校驗.dex文件中的所有類,從而降低class的負擔,從而可以使用一系列的優化來提升運行性能。這些都是通過dexopt命令來實現的。

No8:

Dalvik VM的實現包括三個獨立的解釋內核:快速、可移植、調試。

快速解釋器是為當前平臺優化的,可能包括手動優化的匯編文件;相對的,可移植解釋器是用C語言寫的,可在廣泛的平臺上使用;調試解釋器是可移植解釋器的變種,包括了支持程序分析和單步。

No9:

No10:

No11:

Dalvik進程管理是依賴于Linux的進程體系結構的,如要為應用程序創建一個進程,它會使用Linux的fork機制來復制一個進程(復制進程往往比創建進程效率更高)。

Zygote是一個虛擬機進程,同事也是一個虛擬機實例的孵化器,通過init進程啟動。首先會孵化出System_Server(Android絕大多系統服務的守護進程,它會監聽socket等待請求命令,當有一個應用程序啟動時,就會向它發出請求,Zygote就會孵化出一個新的應用程序進程)。每當系統要求執行一個Android應用程序時,Zygote就會運用Linux的fork機制產生一個子進程來執行該應用程序。

No12:

Android的初始化流程

No13:

Android中進程總結

1)系統啟動時init進程會創建Zygote進程,Zygote進程負責后續Android應用程序框架層的其他進程的創建和啟動工作

2)Zygote進程會首先創建一個SystemServer進程,SystemServer進程負責啟動系統的關鍵服務,如包管理服務PackageManagerService和應用程序組件管理服務ActivityManagerService

3)當我們需要啟動一個Android應用程序時,ActivityManagerService會通過Socket進程間通信機制,通知Zygote進程為這個應用程序創建一個新的進程

No14:

Zygote進程是在系統啟動時產生的,它會完成虛擬機的初始化、庫的加載、預置類庫的加載和初始化等操作,而在系統需要一個新的虛擬機實例時。Zygote通過復制自身,最快速的提供個系統。另外,對于一些只讀的系統庫,所有虛擬機實例都和Zygote共享一塊內存區域,大大節省了內存開銷。

當Zygote進程在使用Linux的fork機制時有如下三種不同方式:

1)fork():孕育一個普通的進程,該進程屬于Zygote進程

2)forkAndSpcecialize():孕育一個特殊的進程,該進程不再是Zygote進程

3)forkSystemServer():孕育一個系統服務進程

轉載于:https://www.cnblogs.com/anni-qianqian/p/7661894.html

總結

以上是生活随笔為你收集整理的《Android虚拟机》----虚拟机概述的全部內容,希望文章能夠幫你解決所遇到的問題。

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