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