2017-04-18 39 views
0

我問的原因是因爲在我的程序中,我有一個父類,它持有可能會或可能不會被孩子使用的方法。我只是想知道編譯器是否爲每個子實例優化了這個。或者它是否仍然需要一點點資源來檢查是否有什麼東西?在java中調用一個空方法使用資源嗎?

預先感謝您!

+1

我不能說是否java編譯器優化了空方法調用,但對於java中的性能問題,這些區域通常不是看的地方。從回答你的問題來看,這個答案可能毫無用處,但我已經進行了大量的表演練習,並且在所有的實用性中都有比這更重要的問題要考慮。 – Jason

回答

2

JVM使用某些啓發式來決定內聯哪些方法。該方法需要是一個熱點(即調用足夠的時間來使內聯值得),它不應該很大,並且不應該被子類覆蓋(這會改變它的行爲並使優化失效)。也可能有其他啓發式。在你的情況下,如果這些空方法不會被覆蓋,並且它們被調用的次數足夠多,它們可能會被內聯。

不用猜測,也可以啓用java命令行標誌來查看JIT正在做什麼(即是否內聯了方法)。看到這篇博客文章:https://techblug.wordpress.com/2013/08/19/java-jit-compiler-inlining/

相關問題