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]8大android除錯工具-monkey,jdb,ddms等Android除錯
- Android 5.0 長啥樣?看這裡Android
- Android Guide Dev 之Processes and ThreadsAndroidGUIIDEdevthread
- CLR Threads and Windows ThreadsthreadWindows
- android TextView裡邊實現圖文混配效果AndroidTextView
- Go 邊看邊練 - 《Go 學習筆記》系列Go筆記
- Android中的Activitys, Threads和記憶體洩露Androidthread記憶體洩露
- 邊下載邊播放的播放器Android邊下邊播播放器Android
- Eclipse Hangs in DDMS post-create initEclipse
- Android stroke 邊框線 某一邊Android
- [轉]Go 邊看邊練 -《Go 學習筆記》系列(一)Go筆記
- React-Router看這裡React
- perl 裡邊的 函式指標函式指標
- Vue裡邊介面訪問Post、GetVue
- 執行緒 threads執行緒thread
- Android 實現邊聽伴奏邊K歌探究Android
- 命令列不會?看這裡命令列
- unapp裡邊如何開啟小程式APP
- 評分9.7!京東斷貨王的Python神書,邊看邊用!Python
- Common threads: Awk by examplethread
- mormot.core.threads--TSynQueueORMthread
- mormot.core.threads--TSynParallelProcessORMthreadParallel
- vivo X7手動分屏任務功能圖文教程 邊聊邊看
- json結構體裡邊的刪除JSON結構體
- 工廠模式還不懂?看這裡!模式
- 從 lite-apiserver 看 SuperEdge 邊緣節點自治APIServer
- Simplifying Graphics With Java and Threads (轉)Javathread
- MySQL 5.5 -- innodb_purge_threadsMySqlthread
- mormot.core.threads--TBlockingProcessORMthreadBloC
- mormot.core.threads--TSynThreadORMthread
- mormot.core.threads--TSynThreadPoolORMthread
- mormot.core.threads.pas unitORMthread
- 資料看百度財報究竟哪裡行哪裡不行
- Android的歷史與花邊Android
- 幽默:優秀程式設計師過馬路看兩邊程式設計師
- Android裡透明的ListViewAndroidView
- 在DDMS中檢視/data/data/*下檔案的解決方法