我有关于创建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?
谢谢你的帮助!
答案 0 :(得分:1)
代码延迟加载,并且类懒惰地初始化。必须加载的代码越多,类初始化的时间就越长。
如果这是一个问题,你可以执行代码的虚拟执行,这样你第一次使用它时会更快。
注意:此时几乎没有编译代码,并且在调用足够多次编译后它可以更快,更快。
就微观基准而言,我会忽略前2-10秒,而前2万次呼叫需要更长时间。