2014-08-28 65 views
1

激進的猜測可以被看作是需要預測程序下一步動作的優化技術的統稱。預測失敗時,會發生去最佳化。破壞完成後可以去優化嗎?

在HotSpot中,當積極的推測預測「引用指向的非常量對象是常量」失敗時,在去最佳化之前損壞必然會回滾嗎?

我想知道是否有可能發生諸如「多線程環境中的緩存一致性問題」或「由於預測失敗而通過網絡發送的錯誤值」等實例。

我沒有JIT代碼的下落用於JIT優化,所以我只想向你們證實這些事情是否會發生。

側面問題:在OpenJDK上JIT部件代碼是否可用?

+1

「*確實JIT部分代碼在OpenJDK上不可用?*」不,[它存在](http://code.metager.de/source/xref/openjdk/jdk8/hotspot/src/ share/vm/opto /),但確切的實現可能會有所不同。 – maaartinus 2014-08-28 14:12:09

回答

1

如果是這樣,這將是一個錯誤。優化是特別不允許的。這並不意味着你不需要同步你的多線程程序;這意味着如果優化器違反了同步的保證,則優化被打破。這也並不意味着這種問題從未發生過;有時,優化器會有錯誤。