亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中的普通指令和快速指令有什么區別(例如aload和fast_aload)

java中的普通指令和快速指令有什么區別(例如aload和fast_aload)

蝴蝶不菲 2023-06-04 10:23:32
我打印出一個簡單 java 程序的執行字節碼,并注意到一些 java 指令是 fast_xxxx 而不是正常指令。我在 JVM 規范中找不到任何相關信息。那么這些指令之間到底有什么區別以及解釋器何時/為什么選擇使用這些指令呢?編輯:字節碼是用-XX:TraceBytecodes選項打印的。
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

那么這些指令之間到底有什么區別呢?

簡而言之:fast_變體是優化的架構相關指令替換

這些優化從何而來?

JVM 模塊解釋器。它可以在非補丁和補丁模式下工作。一些相關的 JVM 選項:

RewriteBytecodes- 允許重寫字節碼

RewriteFrequentPairs- 將常用的字節碼對重寫為單個字節碼

- 包含一些快速字節碼的定義(參見參考資料?Bytecodes::initialize()),其中一組快速字節碼被定義。此外,可以在依賴于平臺的代碼區域中定義快速字節碼。重寫的字節碼依賴于架構。好吧,至少,其中一些是,而另一些則不是。

口譯員什么時候/為什么選擇使用這些?

JVM 具有重寫字節碼流的能力,例如組合通用指令對。至少大多數(如果不是全部)到fast_版本的字節碼轉換只是為了性能而完成的,并且可以被禁用。這樣做會影響口譯員的表現。


查看完整回答
反對 回復 2023-06-04
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號