Java第一次创建一个Object会慢慢创建这个Object

时间:2017-03-09 13:08:17

标签: jvm jvm-hotspot

我有关于创建java对象的问题,

public static void main(String[] args) throws InterruptedException {
    for(int i =0;i<5;i++){
        long now = System.currentTimeMillis();
        RestTemplate httpClient = new RestTemplate();
        System.out.println(System.currentTimeMillis() - now);
    }
}

这个结果是

1084
16
7
12
5
显然,第一次花了1084ms,但第二次只花了16ms。 为什么这发生在Java? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

代码延迟加载,并且类懒惰地初始化。必须加载的代码越多,类初始化的时间就越长。

如果这是一个问题,你可以执行代码的虚拟执行,这样你第一次使用它时会更快。

注意:此时几乎没有编译代码,并且在调用足够多次编译后它可以更快,更快。

就微观基准而言,我会忽略前2-10秒,而前2万次呼叫需要更长时间。