2017-07-07 49 views
0

This answer表示驗證用於確保Java字節碼「遵循Java語言規則的安全性」。可能會導致Java字節碼驗證失效的問題有哪些?

如果未執行此驗證,將允許運行不安全的字節碼。這會導致什麼問題?

是否存在禁用字節碼驗證可接受的情況?

+1

崩潰,數據損壞,被骯髒的感覺等。您應該反過來問:應該禁用驗證有什麼優勢? – Holger

+0

[這裏是一個示例](https://stackoverflow.com/questions/40321205/jvm-crash-problematic-frame-canonicalizerdo-if)關閉驗證時可能發生的情況。 – apangin

回答

1

字節碼驗證可確保代碼無法像重新解釋int這樣的指針並執行任意內存訪問。如果您嘗試在Java沙箱中運行不受信任的代碼,這是非常有用的。

如果您完全信任您正在運行的所有代碼,則它不太有用,因爲它只會捕獲意外的錯誤。驗證信息也可能被送入優化器 - 我不確定這一點,但優化器本質上必須驗證代碼才能進行任何有用的靜態分析。

0

強烈建議不要在生產環境中使用「-Xverify:none」選項,因爲它會禁用字節碼驗證並導致隨機崩潰。請查看詳細博客here

相關問題