我在各种地方(论坛等)看到这个参数,常见的答案是它有助于高并发服务器。尽管如此,我还是找不到 sun 的官方文档来解释它的作用。另外,它是在 Java 6 中添加的还是在 Java 5 中存在的?
(顺便说一句,许多热点 VM 参数的好地方是 this page)
更新:Java 5 不使用此参数启动。
最佳答案
为了优化性能,JVM 在代码中使用了一个“伪内存屏障”来充当跨多个处理器同步时的屏蔽指令。可以恢复到“真正的”内存屏障指令,但这会对性能产生明显(和坏)的影响。
-XX:+UseMembar
的使用导致 VM 恢复为真正的内存屏障指令。这个参数本来是打算暂时存在的,作为新的伪屏障逻辑的验证机制,结果发现新的伪内存屏障代码引入了一些同步问题。我相信这些问题现在已得到解决,但在此之前,解决这些问题的可接受方法是使用恢复标志。
该错误是在 1.5 中引入的,我相信该标志存在于 1.5 和 1.6 中。
我已经从各种邮件列表和 JVM 错误中用 google-fu'ed 得到了这个:
关于java - 什么是Java的-XX :+UseMembar parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1120088/