下面是我聽到很多在整個高中和大學的計算機科學課程的一句話:「現代JVM」與舊JVM有什麼不同?
「這不是現代的JVM的問題。」
通常這會出現在關於整體性能或優化策略的討論中。儘管它總是被視爲一種神奇的最終答案,好像它讓問題不再值得思考。這讓我想到:原型「現代JVM」與舊JVM之間有什麼區別?
下面是我聽到很多在整個高中和大學的計算機科學課程的一句話:「現代JVM」與舊JVM有什麼不同?
「這不是現代的JVM的問題。」
通常這會出現在關於整體性能或優化策略的討論中。儘管它總是被視爲一種神奇的最終答案,好像它讓問題不再值得思考。這讓我想到:原型「現代JVM」與舊JVM之間有什麼區別?
JVM技術最顯着的改進是JIT:Just In Time編譯器。 JIT在運行時對代碼進行優化,從而產生巨大的性能提升,這使得Java(至少在某些領域)與C/C++程序具有競爭力。
有關動態優化(如代碼運行)與靜態優化(編譯期間)的好處的有趣討論可以在Steve Yegge的講座中找到:http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html(其中,BTW本身很有趣)。
與JIT並不完全無關的其他JVM改進是爲類方法和接口方法更快地分派虛擬方法。
非協調同步過去很慢。
垃圾收集速度快了很多。
熱點優化已經變得更好。
一些非常舊的JVM只有green threads。
我打算說'現代JVM'更像是關於原JVM的糟糕表現,而不是關於當代的說法 – Jherico 2009-12-28 20:54:54
基於分析信息和從字節碼派生的其他信息現代JIT可以積極地優化機器代碼:可與來自預期使用衍生的優化電平來產生
二進制日期戳:-P – TofuBeer 2010-01-09 04:21:54
@TofuBeer:謝謝你,上尉明顯。正確和簡潔,所以+ 1 /接受。哦,等待... – Pops 2010-01-09 15:55:13
相關的問題,解釋垃圾收集位更詳細:http://stackoverflow.com/questions/2931170/does-variable-null-set-it-for-garbage-collection – Pops 2010-05-28 19:18:25