android ddms裡邊看threads
在Android系統中,Java層和c++/c層都可以建立執行緒。不過Java層建立的執行緒最終都由c++/c層來實現。使用ddms這個工具可以檢視虛擬機器例項程式(除zygote本身和由native code建立的程式,比如vold外)所包含的執行緒大致資訊。比如執行緒名字,id號,狀態,user time和system time等。
大家可以看到一般一個虛擬機器例項程式都包含有如下7個通用的執行緒,下面大致講一下這些執行緒的作用和建立流程。
1. main
這個就是主執行緒了。具體流程待細述。
2. HeapWorker
一個非同步的工作執行緒,處理那些需要在單獨執行緒裡面做的避免同步問題的堆操作。其原始碼在dalvik/vm/alloc/HeapWorker.*部分。
3. Signal Catcher
這個執行緒是用來捕獲linux訊號和做一些後續處理的。比如說,當一個SIGQUIT (Ctrl-\)訊號到達後,這個執行緒就會掛起虛擬機器,並且將所有執行緒的狀態資訊輸出到log。其原始碼在dalvik/vm/SignalCatcher.*部分。
4. JDWP
這個執行緒是用來實現Java Debug Wire Protocol的。如果命令列偵錯程式的引數為"suspend=y",這樣會暫停虛擬機器。這個估計和eclipse的除錯和ddms等除錯工具相關。其原始碼在dalvik/vm/jdwp/*部分。
5. Stdio Converter
這個執行緒從標準輸出和標準錯誤輸出讀取資訊並將它們轉換為log資訊。其原始碼在dalvik/vm/StdioConverter.*部分。
6. Compiler
Android's Jit獨立於目標平臺的部分。其原始碼在dalvik/vm/compiler/Compiler.*和dalvik/vm/interp/Jit.*等部分。
7. Binder Thread #%d
使用binder進行通訊時用到的執行緒。其原始碼在frameworks/base/libs/binder/*等部分。
以下的執行緒屬於system_server和應用程式專有執行緒,視具體應用的需求而定。
大家可以看到一般一個虛擬機器例項程式都包含有如下7個通用的執行緒,下面大致講一下這些執行緒的作用和建立流程。
1. main
這個就是主執行緒了。具體流程待細述。
2. HeapWorker
一個非同步的工作執行緒,處理那些需要在單獨執行緒裡面做的避免同步問題的堆操作。其原始碼在dalvik/vm/alloc/HeapWorker.*部分。
3. Signal Catcher
這個執行緒是用來捕獲linux訊號和做一些後續處理的。比如說,當一個SIGQUIT (Ctrl-\)訊號到達後,這個執行緒就會掛起虛擬機器,並且將所有執行緒的狀態資訊輸出到log。其原始碼在dalvik/vm/SignalCatcher.*部分。
4. JDWP
這個執行緒是用來實現Java Debug Wire Protocol的。如果命令列偵錯程式的引數為"suspend=y",這樣會暫停虛擬機器。這個估計和eclipse的除錯和ddms等除錯工具相關。其原始碼在dalvik/vm/jdwp/*部分。
5. Stdio Converter
這個執行緒從標準輸出和標準錯誤輸出讀取資訊並將它們轉換為log資訊。其原始碼在dalvik/vm/StdioConverter.*部分。
6. Compiler
Android's Jit獨立於目標平臺的部分。其原始碼在dalvik/vm/compiler/Compiler.*和dalvik/vm/interp/Jit.*等部分。
7. Binder Thread #%d
使用binder進行通訊時用到的執行緒。其原始碼在frameworks/base/libs/binder/*等部分。
以下的執行緒屬於system_server和應用程式專有執行緒,視具體應用的需求而定。
相關文章
- android DDMS method profiling 工具使用分析Android
- 邊下載邊播放的播放器Android邊下邊播播放器Android
- Android 實現邊聽伴奏邊K歌探究Android
- mormot.core.threads--TSynBackgroundTimerORMthread
- mormot.core.threads--TSynQueueORMthread
- mormot.core.threads--TBlockingProcessORMthreadBloC
- mormot.core.threads--TSynBackgroundThreadMethodORMthread
- mormot.core.threads--TSynParallelProcessORMthreadParallel
- mormot.core.threads--TSynThreadORMthread
- mormot.core.threads--TSynThreadPoolORMthread
- Threads in Node 10.5.0: a practical introthread
- VisualVM第二章-ThreadsLVMthread
- mormot.core.threads.pas unitORMthread
- React-Router看這裡React
- unapp裡邊如何開啟小程式APP
- perl 裡邊的 函式指標函式指標
- 評分9.7!京東斷貨王的Python神書,邊看邊用!Python
- json結構體裡邊的刪除JSON結構體
- tooless邀請碼看這裡
- 命令列不會?看這裡命令列
- 從 lite-apiserver 看 SuperEdge 邊緣節點自治APIServer
- Snapchat全景視訊廣告服務上線,使用者可邊走邊看
- 工廠模式還不懂?看這裡!模式
- 計算任意多邊形的面積(Android)Android
- 從原始碼看 Android 事件分發原始碼Android事件
- Android Fragment看這篇就夠了AndroidFragment
- 底邊虛擬主播:怕猝死,更怕沒人看
- vi裡邊的正則總是很麻煩
- 加固後ARouter罷工了?看這裡
- 2016,智慧硬體融資看哪裡?
- 幽默:優秀程式設計師過馬路看兩邊程式設計師
- 從crash看kotlin-android-extensions工作原理KotlinAndroid
- 收入提不高? 提升變現能力看這裡!
- Docker如何高效部署Node應用?看這裡Docker
- Vuetify 中,想要整合 Heroicons?看這裡,我教你!Vue
- TensorFlow入門簡介,新手請看這裡!
- 怎麼快速學習Python?請看這裡Python
- # uwsgi 的 processes , threads , workers 三者的關係thread
- Java 21 新特性:虛擬執行緒(Virtual Threads)Java執行緒thread