小编use*_*300的帖子

与Java的堆分配相比,为什么C++堆分配如此之慢?

我在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实际上会更慢,计算指针引用和分配内存.

c++ java heap performance allocation

0
推荐指数
1
解决办法
1584
查看次数

标签 统计

allocation ×1

c++ ×1

heap ×1

java ×1

performance ×1