Java中的对象创建缓慢

我的经验表明,Java中的对象创建非常缓慢。 通常,我只是通过删除对象创建并重复使用相同的对象来优化我的代码。

我想知道它在OOP基础上的其他语言是否同样缓慢,因为对我来说,非常直观的是,面向硬核对象的语言需要花费很多时间来创建对象。

有人在几个langauges上描述过这个吗?

试试看看你从中获得了什么 – 一些练习试图让VM不优化循环:

import java.util.ArrayList; import java.util.Random; class DummyInteger { private int i; public DummyInteger(int i) { this.i = i; } public int getI() { return i; } } public class ObjectCreationTest { final static int ITERATIONS = 2000000; public static void main(String[] args) { Random r = new Random(System.currentTimeMillis()); int[] randArr = new int[ITERATIONS]; for(int i = 0; i < ITERATIONS; i++) { randArr[i] = r.nextInt(); } DummyInteger[] iArr = new DummyInteger[ITERATIONS]; long start = System.currentTimeMillis(); for(int i = 0; i < ITERATIONS; i++) { ArrayList list = new ArrayList(); list.add(new DummyInteger(randArr[i])); iArr[i] = list.get(0); } long end = System.currentTimeMillis(); System.out.println(String.format("Creating %d objects took %d ms",ITERATIONS*2,end-start)); int sum = 0; for(DummyInteger mi: iArr) { sum += mi.getI(); } System.out.println(sum); } } 

我有

创建4000000个对象需要678毫秒

每个物体应该在170纳秒左右。

虽然在极少数情况下可能会有明显的CPU影响 ,但一般情况下,当前虚拟机的对象创建速度与实际情况一样快。

这篇文章我称之为“城市表演传说” ,我认为这只是其中一个神话。

另请参阅http://www.javaperformancetuning.com/tips/rawtips.shtml ,了解如何调整Java App的性能。

问候。