和一些人玩的时候jcstress
代码中,我注意到两个对我来说非常新的参数:StressLCM
and StressGCM
.
我要做的第一件事就是在源代码本身中搜索这些内容,虽然我找到了一些东西,但仍然不清楚它们是什么actually做。我真的希望在源代码中看到一些可以阐明一些观点的注释,但没有运气。
我还找到了错误描述添加了这些内容,但解释对我来说没有意义:
LCM/GCM 中的随机指令调度。
如果可能的话,有人可以用简单的英语解释他们是做什么的吗?
LCM / GCM 代表本地代码运动 / 全局代码运动。为了优化 CPU 利用率,编译器可以在不更改代码语义的情况下重新排序独立指令。编译器尝试找到最佳(从性能角度)的指令顺序。这称为指令调度,这就是 LCM / GCM 所做的事情。
With -XX:+StressLCM
/ -XX:+StressGCM
选项指令调度的工作方式有点不同。它不再尝试寻找最佳调度,而是在允许的约束内选择随机指令顺序,仍然保持原始语义不变。这种不确定性行为有助于测试更多的指令交错组合,这对于发现微妙的并发问题至关重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)