我在 Java 和 C++ 中进行了小型测试,创建了大量非常小的对象(没有类成员,没有构造函数),Java 显然更快(我的意思是 C++ 似乎真的很慢)。我敢打赌这与JVM有关,但以哪种方式?
编辑:
我使用的类在 C++ 中是这样的(因为我说没有类成员,在构造函数中没有做任何事情):
class foo{
public:
foo(){}
~foo(){}
}
在 Java 中:
public class Foo{
public Foo(){}
}
我所做的小测试只是在一个循环中分配大量对象(连续大约 1000000000 个)。我通过 OpenJDK 实现使用了 GCC 4.7.2 和 Java 1.7,两者都在使用 Linux 的同一台机器上。
我敢打赌,这确实与内存池分配有关,这表明 JVM 拥有不需要的内存。
我仍然感到困惑,因为我认为 JVM 实际上会更慢,计算指针引用和分配内存。