Skip to content

性能微优化-静态方法调用

About 204 wordsLess than 1 minute

性能新书

2026-08-20

6.12 静态方法调用

Java对静态方法调用采用的字节码指令是INVOKESTATIC, 而对应实例方法的调用,字节码指令INVOKEVIRTUAL

后者称为虚方法调用,每个类都会维护一个虚方法表vtable,包含了方法它会从虚方法表中找到调用入口,这个虚方法表维护了方法名(包含签名)到实际调用方法的对应关系,如果当前类未查询到,则需要找到父类的虚方法表

显然调用实例方法,比调用静态方法稍微耗时,在本节的测试中,instanceCall和staticCall的吞吐量如下:

Benchmark                                 Mode          Score     Units   
c.i.c.c.StaticMethodCall.instanceCall    thrpt    1751021.010    ops/ms     
c.i.c.c.StaticMethodCall.staticCall      thrpt    2612071.922    ops/ms

知行合一