Are Java static calls more or less expensive than non-static calls?

First: you shouldn’t be making the choice of static vs non-static on the basis of performance.

Second: in practice, it won’t make any difference. Hotspot may choose to optimize in ways that make static calls faster for one method, non-static calls faster for another.

Third: much of the mythos surrounding static versus non-static are based either on very old JVMs (which did not do anywhere near the optimization that Hotspot does), or some remembered trivia about C++ (in which a dynamic call uses one more memory access than a static call).

Leave a Comment