[問題] JIT 問題

看板AndroidDev作者 (非常念舊)時間11年前 (2014/08/11 16:09), 11年前編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/5 (看更多)
我查詢了網路上以及書本 版本1: JIT是將source code 轉換成 byte code之後,在程式執行期間 再將byte code編譯成機械碼。 版本2: 擁有JIT表示Dalvik將APP的byte code轉換成二進制組合指令,那將 以原生方式執行在目標的CPU上,而不是由VM一次解譯一條指令。 這兩者,哪種比較對阿.....版本1說得好像就是執行期間,需要才編譯成機械碼。 這和版本2是直接說"不是由VM一次解譯一條指令"好像有點抵觸,希望能為我解惑, 謝謝。版本2出自於O'REILY翻譯的書,我個人覺得翻譯的好爛,前因後果要自己兜起來。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.76.147 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1407744546.A.0A5.html ※ 編輯: gn00618777 (211.21.170.157), 08/11/2014 16:27:58

08/11 21:29, , 1F
基本上是2 但jit只會編譯那些夠"熱"的指令
08/11 21:29, 1F

08/11 21:30, , 2F
它會統計指令被執行的次數 超過門檻就編成native
08/11 21:30, 2F

08/11 21:30, , 3F
丟進android的匿名共享記憶體(ashmem)
08/11 21:30, 3F

08/11 21:34, , 4F
google io 2010有一個議程就在說這個
08/11 21:34, 4F

08/11 22:22, , 5F
請問,版本二他說轉換成二進制組合指令他是指機械碼嗎
08/11 22:22, 5F

08/11 22:32, , 6F
1也沒錯啊, 只是沒描述清楚而已, 是在執行期進行轉換的
08/11 22:32, 6F

08/11 22:33, , 7F
但沒說一次轉換多少(基本上不是一次一個指令...)
08/11 22:33, 7F

08/12 00:15, , 8F
版本二的可能是指Dalvik的Dex格式,而非真正機器碼
08/12 00:15, 8F
文章代碼(AID): #1Jw7eY2b (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1Jw7eY2b (AndroidDev)