我正在尝试测试一些队列插入和对象移除时间戳。经过几次测试运行后,我对相同代码的结果进行了 80 倍的显着加速改进。这看起来很明显是 JVM 或硬件\cpu 缓存的缓存结果,但我希望每次运行都能获得新的结果。
有没有一种方法可以从 Java 代码中以编程方式清除这两个缓存?
最佳答案
这可能是由于 JIT JIT 会在运行一定次数后将您的字节码编译为机器码,以提高效率。
您可以通过设置 -XX:CompileThreshold
选项(默认值为 10,000)或 excluding your class from being optimised at all 来更改方法优化前的调用次数。 .
但是我不确定您为什么要禁用编译器并强制您的程序运行得更慢。
关于java - 以编程方式清除 Java\CPU 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919164/