-1

是一样的吗?还是静态函数中的 new 分配方式与实例方法中的分配方式不同?

4

1 回答 1

6

不,效果是一样的。从静态和非静态方法范围分配没有区别。如果您正在考虑在堆栈上分配与在堆上分配(如在 C/C++ 中),那么这种差异在 Java 中并不那么突出,并且不受您从哪里调用new的影响。默认情况下,每次使用 时new,都会在堆上分配一个对象——在现代 JVM(Java6 及更高版本)中存在一些异常,这是由逃逸分析等优化引起的(如果它是线程和局部范围受限)。但是,局部原始变量和引用总是被压入堆栈。

于 2012-04-24T15:12:59.057 回答