4

我目前感兴趣的问题是分析/优化一些代码。使用 Java 进行分析的一般建议是“运行”、“等待热点 JIT 编译器完成其工作”、“重复测试”......

所以问题是

  • 我应该等待热点启动并完成其工作多长时间?
  • 当 CPU 相当饱和时(由其他线程),JIT 会运行吗?- 在现实生活中可能会发生该进程不断将 CPU 加载到 100%。
  • 需要执行多少次相同的代码来识别“热点”?
  • 是否有可能以某种方式神奇地(可能使用 Oracle JVM 的一些专有 API)来触发某些类的 JIT 编译?
4

1 回答 1

0

我应该等待热点启动并完成其工作多长时间?

大约 10,000 次调用/迭代和几毫秒。

当 CPU 相当饱和时(由其他线程),JIT 会运行吗?- 在现实生活中可能会发生该进程不断将 CPU 加载到 100%。

是的,这可能需要更长的时间,但是以 100% 的 CPU 执行测试通常是一个好主意,因为结果不太可能代表您在生产中所做的事情。

需要执行多少次相同的代码来识别“热点”?

我会等到代码在可能的情况下预热。真实的测试数据、高 CPU 利用率的几秒钟和一个体面的分析器通常就足够了。

是否有可能以某种方式神奇地(可能使用 Oracle JVM 的一些专有 API)来触发某些类的 JIT 编译?

除了运行它足够的次数之外。过早编译类会导致次优代码。代码根据其使用方式进行了优化。JRockit(也归 Oracle 所有)拥有/拥有这样的功能。

于 2013-01-28T22:27:52.967 回答