【发布时间】:2018-05-11 10:43:36
【问题描述】:
理论上和实践上哪个代码更快:
class ABC{
File file;
void method(){
file = new File();
}
}
或
class ABC{
void method(){
File file = new File();
}
}
类 ABC 只被实例化一次。但是该实例的method() 被多次调用。注意:我知道在这种情况下速度实际上是无关紧要的。
【问题讨论】:
-
这段代码在任何一种情况下都没有任何影响。您将很难准确测量时间,更不用说差异了。
-
如果您需要将文件作为实例字段,请将其设为实例字段。如果您只在该方法中需要它,请使用局部变量。速度无关紧要。
-
@JaroslawPawlak 你认为什么更快 - 每次在堆内存末尾添加一个新引用(第二个代码)或扫描引用(过去创建的)存在的位置每次(第一个代码)?
-
你很困惑。这两个代码在方法内部创建了新的,因此这两个代码在堆中添加了一个新对象。唯一不同的是引用该对象的变量存储在哪里。一个将其与对象实例的其他数据一起存储,另一个将其存储在堆栈中。这都是内存,所以两者的速度基本相同。
-
@kumesana 我不是在询问每种情况下访问 File 实例所需的时间。我只问了多次调用 method() 所需的时间。
标签: java memory-management heap-memory