gpt4 book ai didi

java - 这两个Java段的性能有什么区别吗?

转载 作者:行者123 更新时间:2023-12-02 09:39:14 26 4
gpt4 key购买 nike

我很想知道这两个 Java 方法调用中的任何一个在处理器时间、内存分配和/或垃圾收集方面是否会有不同的行为。

SomeObject myObj = new SomeObject();
myObj.doSomething();

对比

new SomeObject().doSomething();

最佳答案

查看生成的字节码:

// code 1
new SomeObject().doSomething();

// bytecode 1
0: new #2; //class SomeObject
3: dup
4: invokespecial #3; //Method SomeObject."<init>":()V
7: invokevirtual #4; //Method SomeObject.doSomething:()V
10: return

你可以清楚地看到这个还有两条指令:

// code 2
SomeObject myObj = new SomeObject();
myObj.doSomething();

// bytecode 2
0: new #2; //class SomeObject
3: dup
4: invokespecial #3; //Method SomeObject."<init>":()V
7: astore_1
8: aload_1
9: invokevirtual #4; //Method SomeObject.doSomething:()V
12: return

这些指令看起来非常冗余并且很容易优化。我敢打赌 JIT 编译器会在需要时处理它们。

关于java - 这两个Java段的性能有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com