在循环中创建新对象的效率

我不确定这个问题是否与语言无关,所以我只是将其视为一个Java问题。 如果你有像这样的循环

for (int i = 0; i < 9; i++) { Object obj = new Object; // fill object // do something with data } 

是否通过循环的每次迭代都创建了内存中的新空间? 如果是这样,旧空间是否被处理? 如果没有,做这样的事情会更有效率

 Object obj = new Object; for (int i = 0; i < 9; i++) { // fill object // do something with data } 

编辑:更新代码以更好地举例说明问题

简短回答:在Java开发过程中忽略这些事情,即使因为大多数这些问题都是由JVM本身黑盒子和管理的。

垃圾收集器将知道该做什么,并将根据情况尝试做最好的事情。

另外你的具体例子对我来说没什么意义..你能进一步详细说明吗?

“让垃圾收集器搞清楚”的基本答案是正确的,但您还应该了解这两个语句的效果:

 String object = new String(); object = array[i]; 

是(1)创建一个新的(空)字符串,并将其分配给“对象”,然后(2)将array[i]的值array[i] “对象”。

(2)中的赋值会覆盖您在(1)中所做的操作,因此您创建的第一个String永远不会被使用。 垃圾收集器最终将回收存储,因此您不必担心它会丢失,但它仍然是一个不必要的分配; 你可以从String object = null;

另请注意, String在Java中是不可变的,因此一旦分配了String对象,就无法更改其值 – 您可以使String变量引用新对象,但不能修改现有对象。

你为什么不进行一些测试并观察结果呢? 垃圾收集器确实有效,但你无法知道垃圾收集器效果最好。 使用大量数据,这种事情可能会影响您的效率。

我认为这个链接有助于追踪您的需求。