jvm指令重排原因?怎么避免?
生活随笔
收集整理的這篇文章主要介紹了
jvm指令重排原因?怎么避免?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原因:計(jì)算機(jī)內(nèi)存操作速度遠(yuǎn)慢于CPU運(yùn)行速度,所以就造成CPU空置,為了將提高CPU利用率,虛擬機(jī)會(huì)按照自己的一些規(guī)則會(huì)跳過執(zhí)行慢的代碼,去執(zhí)行快的代碼(即對(duì)代碼重新排序),從而提升jvm的整體性能。
怎么避免:給關(guān)鍵的代碼加上volatile關(guān)鍵字,所謂關(guān)鍵,就是會(huì)被執(zhí)行順序影響結(jié)果。
volatile關(guān)鍵字的三個(gè)特征是:線程可見、不具備原子性、禁止指令重排,volatile 的讀性能消耗與普通變量幾乎相同,但是寫操作稍慢,因?yàn)樗枰诒镜卮a中插入許多內(nèi)存屏障指令來保證處理器不發(fā)生亂序執(zhí)行。
總結(jié)
以上是生活随笔為你收集整理的jvm指令重排原因?怎么避免?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]调试 smallcorgi/Fas
- 下一篇: Java项目:JSP网上零食销售系统