2015-06-03 70 views
0

變量有沒有辦法告訴JVM儘可能長時間地緩存線程變量,從不更新它們,除非使用內存屏障或volatile變量? (用於測試)強制JVM緩存線程

回答

1

它不是一個真正的變量線程本地高速緩存,導致等著名效果永不終止條件循環。
如果能夠證明變量不會改變/不需要觀察負載之間的併發變化,編譯器可以消除冗餘負載。

許多併發失敗也不必依賴於看到過時的值,也可能是由於看到新的價值觀失靈。我想我已經閱讀了一些關於修改後的研究虛擬機的內容,這些虛擬機積極地對生成的代碼進行合法但程序員敵對的轉換,以引發併發失敗。

什麼你可以嘗試顛簸了所有內聯的限制和代碼緩存的大小,並希望儘可能多地被編譯成的代碼,一個巨大的BLOB和編譯器消除了儘可能多的負載,因爲它可以。