Java 开销:方法调用与对象创建

Java 开销:方法调用与对象创建,java,Java,就我对JVM的理解而言,调用一个方法(即分配一个新的堆栈帧等)通常比创建一个新对象要便宜 然而,假设方法和对象都声明了相同数量的相同类型的局部/实例变量,并将它们实例化为相同的值,那么我们能否估计两者之间的开销差异通常有多大?即使在这种情况下,method()需要被构造成一个类 在JVM堆中注册类本身包括成员(method())meme分配 因此,在任何情况下,对象创建都有点高。在现代JVM中,对象创建是一种极其快速的操作。比如说,看看这个。上面写着:“Sun估计大约十条机器指令的分配成本”。出

就我对JVM的理解而言,调用一个方法(即分配一个新的堆栈帧等)通常比创建一个新对象要便宜


然而,假设方法和对象都声明了相同数量的相同类型的局部/实例变量,并将它们实例化为相同的值,那么我们能否估计两者之间的开销差异通常有多大?

即使在这种情况下,method()需要被构造成一个类

在JVM堆中注册类本身包括成员(method())meme分配


因此,在任何情况下,对象创建都有点高。

在现代JVM中,对象创建是一种极其快速的操作。比如说,看看这个。上面写着:“Sun估计大约十条机器指令的分配成本”。

出于好奇,你为什么要试图弄清楚这一点,也就是说,更大的目标是什么?这可能会有所帮助:请记住,一个对象可以被实例化并在需要的时间内传递,方法及其局部变量仅在方法执行期间“存在”。如果这是一次微观优化的尝试,我建议您认真研究您的程序流,以确定真正的问题可能在哪里。@Scorpion-主要是出于个人好奇心和对JVM如何工作的深入理解。实际上,我目前从事的项目需要相当多的遍历相当复杂的递归ADT。目前我使用递归方法来实现这一点(其中许多方法不是尾部递归),我想探索一下,例如,我是否可以通过访问者做得更好。你的好奇心会让我们都了解:-)