虽然与一些打jcstress
码,我注意到两个参数是非常新的对我说:StressLCM
和StressGCM
。
我做的第一件事情是在源代码本身搜索这些,虽然我已经发现了一些东西,目前还不清楚他们实际上做的。我真的很希望看到在源代码中,将一些启发一些意见,但没有运气。
我也发现了错误的描述,其中这些都增加了,但解释是没有意义对我来说:
随机化指令调度在LCM / GCM。
有人可以解释他们所做的事情,如果可能的话用简单的英语?
LCM / GCM代表本地代码移动/全球守则运动。为了优化CPU利用率,编译器可重新排序独立指令不改变代码的语义。编译器试图找到指令的最优化(从性能的角度来看)的顺序。这就是所谓的指令调度,而这正是LCM / GCM做。
随着-XX:+StressLCM
/ -XX:+StressGCM
选项有点不同的方式指令调度工作。它不再试图找到最好的日程安排,而是选择在允许的限制范围内随机指令顺序,依然保持原有的语义不变。这种不确定的行为有助于测试指令交织,这是在寻找微妙的并发问题所必需的多种组合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句