我在一臺Linux機器上並使用openjdk7。在使用-server選項時,發現我的代碼執行速度提高了兩倍,我深入研究了虛擬機內部發生的事情,發現服務器虛擬機像瘋了一樣嵌入我的代碼,而客戶機虛擬機根本不內聯。客戶端VM未內聯?
這是正常的行爲嗎?
我在一臺Linux機器上並使用openjdk7。在使用-server選項時,發現我的代碼執行速度提高了兩倍,我深入研究了虛擬機內部發生的事情,發現服務器虛擬機像瘋了一樣嵌入我的代碼,而客戶機虛擬機根本不內聯。客戶端VM未內聯?
這是正常的行爲嗎?
Server VM期望程序運行時間很長,因此可以執行更復雜的優化。通常使用服務器虛擬機很有用,但內聯可能會導致更多的內存消耗。 – MrSmith42
如果您正在尋找改變JVM運行模式的方法,您還需要確保您瞭解在多線程應用程序中對可見性的潛在影響,因爲由於策略差異導致交換機可能產生意想不到的後果模式之間的操作。 – codeghost
爲了更深入地理解差異,你可以看看http://stackoverflow.com/questions/198577/real-differences-between-java-server-and-java-client – Taky