You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8中两种传参方式效率对比:直接传返回值VS先赋值再传

Java中两种传参方式的性能与内存效率对比

针对你提出的问题,结合Java 8的HotSpot虚拟机特性,结论和分析如下:

两种写法的性能与内存效率差异

不管是显式初始化对象再传参,还是直接传递方法返回值,在Java 8下几乎没有性能和内存差异,甚至经过JIT(即时编译器)优化后,二者的执行逻辑完全一致。

底层编译与优化逻辑

  • 对于代码示例1:
    Properties properties = getProperties();
    doSomethingWithProperties(properties);
    
    你显式声明的properties局部变量只是栈上的一个引用(64位JVM下占8字节),如果这个变量后续没有其他用途,JVM的逃逸分析会直接消除这个局部变量,将其优化成和示例2完全相同的执行逻辑。
  • 对于代码示例2:
    doSomethingWithProperties(getProperties());
    
    getProperties()的返回值会直接被压入操作数栈,作为参数传递给目标方法,字节码层面的执行流程和示例1优化后的状态一致。

内存占用细节

两种写法中,getProperties()创建的Properties对象都存储在堆内存中,这部分内存占用完全相同。唯一的区别是示例1多了一个栈上的引用,但这个引用的内存开销极小,且会被JIT优化消除,不存在可观测的内存效率差异。

选择建议

无需为这种写法的性能差异纠结,优先考虑代码可读性:

  • 如果后续还需要复用Properties对象,选择示例1的写法更清晰;
  • 如果仅需一次性传参,示例2的写法更简洁。

内容的提问来源于stack exchange,提问作者Martijn Jan Jaap de Bruin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:45:35