以编程方式清除Java \ CPU缓存

时间:2013-02-17 08:07:10

标签: java caching testing junit jvm

我正在尝试测试一些队列插入和删除对象的时间戳。经过几次测试后,我在同一代码上的速度提升了80倍。这看起来很明显是JVM或硬件\ cpu缓存的缓存结果,但我希望每次运行都能得到新的结果。

有没有办法从Java代码中以编程方式清除这两个缓存中的任何一个?

1 个答案:

答案 0 :(得分:5)

这可能是由于JIT的开始。在一定次数的运行后,JIT会将你的字节码编译成机器码,以提高效率。

您可以通过设置-XX:CompileThreshold选项(默认值为10,000)或excluding your class from being optimised at all来更改方法优化前的通话次数。

但是我不确定你为什么要禁用编译器并强制程序运行得更慢。