Java程序到底是如何運行的?
1. 內存回收機制: Java自身的內存管理方式決定了, 每當進行徹底的垃圾回收的時候, 所有的Java應用程序必須停下來. 這點非常的討厭, 搞得VM的開發者不得不挖空心思的去設計垃圾回收的算法.
2. 函數的調用: Java的面向對象設計思想, 導致Java類庫的設計, 充滿了許多相關聯的, 非常短小的方法, 比如private成員變量的get/set函數. 還有就是Java的類,至少有一個構造函數, 因此很多情況下, 會產生一些空的構造函數. 函數的調用會產生一些開銷. 再就是Java中函數的動態綁定, 特別是interface的使用, 導致java函數調用的效率比較低.
3. Java的異常機制: Java規范要求了運行期異常檢查. 這對Java程序的調試和排錯有很大幫助, 對Java的效率,卻造成了很大的影響.
4. 同步方法和同步的代碼塊. 同步方法和同步代碼塊很容易造成性能的下降, 在java這種面向對象設計思想的環境里, 很多方法被設計的很小, 調用很頻繁, 如果是同步的方法, 性能下降就非常的明顯.