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

标签 java caching testing junit jvm

我正在尝试测试一些队列插入和对象移除时间戳。经过几次测试运行后,我对相同代码的结果进行了 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/

相关文章:

python - 在不同的测试类之间共享数据

java - 我应该使用 guard 子句,并尽量避免 else 子句吗?

java - 按列排序时调用的 JTable 方法

java - 如何在水平 ScrollView 中显示Arraylist项目?

java - 主要优点/区别是什么 [ spring-cache vs plain map caching ]

angular - 使用 Karma 进行测试 - 无法绑定(bind)到 'routerLink',因为它不是的已知属性

java - 在 RecyclerView 项目之间设置自定义分隔线

http - Kemal 使用处理程序中间件缓存响应

Symfony2 身份验证角色未在 TWIG 模板中更新

R - testthat 使用测试目录外的数据文件