java - 创建对象使 VM 更快?

标签 java algorithm optimization object creation

看这段代码:

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/

相关文章:

java - 依次使用不同的请求正文发出多个 API 请求

java - 独立应用程序的数据源 - 无应用程序服务器

java - 基于位置的数据抓取算法

Python-是否有一个模块可以自动从网页上抓取文章的内容?

java - Android:无法使用 TextView 执行方法

java - Mapstore 未从数据库 Hazelcast 加载数据

algorithm - 最大流图算法

c++ - gcc 不合并连续的栅栏

c++ - boost 压缩矩阵基础知识

performance - 人类可检测到的最小滞后是多少?