/usr/bin/time 是否包括 java 程序的后程序垃圾回收?



我正在编写一个在Java和C++中实现的基准矩阵乘法程序。 我想减少垃圾回收对 Java 程序计时的影响,以便尽可能匹配C++版本。

为此,我使矩阵数组成为主类的最终静态成员,我认为这些成员将在程序线程完成执行后收集。

public class MatMult {
    public static final int m1[][] = new int[BIGNUM][BIGNUM];
    //  ... repeat
    public static void main() {
        //  ... do fun maths
    }
}

当我对这些(/usr/bin/time java MatMult)计时时,计时是否包括在 MatMult 完成执行后清理静态成员所花费的时间?(我的印象是清理目前由单独的 JVM 线程完成)

作为一般规则,Java 运行时环境在退出时不执行垃圾回收。更直接的问题是JIT的性能成本,当然还有尝试编写哑代码。此外,main()的签名需要像这样的String[]

public static void main(String[] args) {

相关内容

最新更新