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

以编程方式清除Java\CPU缓存,java,caching,testing,junit,jvm,Java,Caching,Testing,Junit,Jvm,我正在尝试测试一些队列插入和对象时间戳的删除。经过几次测试运行后,在相同代码上,我的加速比提高了80倍。这显然是JVM或hardware\cpu缓存的缓存结果,但我希望每次运行都能得到新的结果 是否有一种方法可以从Java代码中以编程方式清除这两个\任何一个缓存 这可能是因为踢进了。JIT将在一定次数的运行后将字节码编译成机器码,以提高效率 您可以通过设置-XX:CompileThreshold选项(默认值为10000)或通过以下方式更改优化方法之前的调用数 但是,我不确定为什么要禁用编译器并强

我正在尝试测试一些队列插入和对象时间戳的删除。经过几次测试运行后,在相同代码上,我的加速比提高了80倍。这显然是JVM或hardware\cpu缓存的缓存结果,但我希望每次运行都能得到新的结果


是否有一种方法可以从Java代码中以编程方式清除这两个\任何一个缓存

这可能是因为踢进了。JIT将在一定次数的运行后将字节码编译成机器码,以提高效率

您可以通过设置
-XX:CompileThreshold
选项(默认值为10000)或通过以下方式更改优化方法之前的调用数


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

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

您可以通过设置
-XX:CompileThreshold
选项(默认值为10000)或通过以下方式更改优化方法之前的调用数


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

这听起来更像是JIT编译器在踢它。因为我无法解决这个问题……为什么不简单地运行一段时间,让jit运行,然后开始测量?为什么这是一个问题?JIT正在加快速度,这就是实际的性能。这听起来更像是JIT编译器在踢它。因为我无法解决这个问题……为什么不简单地运行一段时间,让jit运行,然后开始测量?为什么这是一个问题?JIT正在加快速度,这就是实际性能。或者他可以完全关闭JIT编译器。。。尽管这样做意味着他将以一种不切实际的方式来衡量代码的运行。这些数字可能并不代表真正的性能。或者他可以完全关闭JIT编译器。。。尽管这样做意味着他将以一种不切实际的方式来衡量代码的运行。这些数字可能并不代表实际表现。