现代jvm几乎都能够讲静态工厂方法进行调用内联化。1、方法调用》函数调用先转移到该函数的内存地址,程序内容读取完毕后转到函数执行前方法。这种操作要求保护现场并记忆执行此地址,执行完恢复现场。这就是通常说的出栈和入栈,这需要一定时间和内存的开销。2、函数内联。程序编译时,编译器讲程序中的调用表达式用目标函数体直接替换。3、java函数内联由jvm决定,指定关键字final指明函数是否内联。jvm内联运行时优化,a、短方法更利于jvm优化。b、小方法频繁执行,jvm会执行内联。
java - Should private helper methods be static if they can be static ,总结来说有以下两点:Make it clear to the reader that they will not modify the state of the object.The JIT compiler will anyways inline and optimize it.把 JIT 的内联优化放在第二位是因为这是个很小的优化,而Volley 源码中大量使用的 private static 主要原因是,为了清晰地表明该方法不会对所在对象造成任何更改。
用static关键字主要由两个优点:把域和方法变成类的域和方法,不会对实例造成更改,存放的内存地址也不一样,存放于数据区。第二点jit会对static的方法进行内联优化,当然这部分只是很小的优化。