我现在感兴趣的问题是分析/优化某些代码。使用Java进行性能分析的一般建议是“运行”,“等待一段时间让热点JIT编译器完成其工作”,“重复测试”......
所以问题是
答案 0 :(得分:0)
我等待热点开始并完成其工作多久了?
大约10,000次调用/迭代和几毫秒。
JIT会在CPU相当饱和(其他线程)时运行吗? - 它可能在现实生活中发生,该过程不断地将CPU加载到100%。
是的,它可能需要更长的时间,但是在100%的CPU上执行测试通常是一个好主意,因为结果不太可能代表你在生产中会做什么。
需要多少次执行同一段代码来识别“热点”?
我会等到代码尽可能热身。现实的测试数据,高CPU利用率的几秒钟和一个不错的分析器通常就足够了。
是否可能以某种方式神奇地(可能使用Oracle JVM的某些专有API)来触发针对证书类的JIT编译?
除了跑足够的次数之外没有。过早编译类可能导致次优代码。代码根据其使用方式进行优化。 JRockit(也归Oracle所有)拥有这样的功能。