看这段代码:
MessageParser parser = new MessageParser();
for (int i = 0; i < 10000; i++) {
parser.parse(plainMessage, user);
}
出于某种原因,它比
运行得慢(大约 100 毫秒)for (int i = 0; i < 10000; i++) {
MessageParser parser = new MessageParser();
parser.parse(plainMessage, user);
}
有什么想法吗?测试重复了很多次,所以它不仅仅是随机的。创建对象 10000 次怎么可能比创建一次更快?
最佳答案
因为 Java 具有“世代垃圾收集”并且可以快速识别(在循环中)它没有重复使用相同的对象/内存空间,所以 GC 成本几乎为零。另一方面,您的长生命周期对象将在 nursery generation 的世代传递中存活下来,并且必须移出到 main generation。
总而言之,如果不进行适当的测试来衡量性能,您就无法真正假设性能。
关于java - 创建对象使 VM 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484224/