我在各种地方(论坛等)看到这个参数,并且常见的答案是它有助于高并发服务器。尽管如此,我还是找不到 sun 的官方文档来解释它的作用。另外,它是Java 6中添加的还是Java 5中存在的?
(顺便说一句,许多热点虚拟机参数的好地方是这一页 http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp)
Update:Java 5 不使用此参数启动。
为了优化性能,JVM 在代码中使用“伪内存屏障”,在跨多个处理器同步时充当防护指令。可以恢复到“真正的”内存屏障指令,但这可能会对性能产生明显(且不好)的影响。
指某东西的用途-XX:+UseMembar
导致VM恢复到真正的内存屏障指令。该参数原本是打算作为新的伪内存屏障逻辑的验证机制暂时存在,但事实证明,新的伪内存屏障代码引入了一些同步问题。我相信这些问题现在已经得到解决,但在此之前,解决这些问题的可接受方法是使用恢复的标志。
该错误是在 1.5 中引入的,我相信该标志存在于 1.5 和 1.6 中。
我从各种邮件列表和 JVM bug 中搜索到了这一点:
- https://bugs.java.com/bugdatabase/view_bug?bug_id=6546278 https://bugs.java.com/bugdatabase/view_bug?bug_id=6546278
- 维基百科强制链接到内存屏障(隔离指令) http://en.wikipedia.org/wiki/Memory_barrier
- Raymond Chen 的经典帖子 http://blogs.msdn.com/oldnewthing/archive/2004/05/28/143769.aspx
- SO关于击剑的问题 https://stackoverflow.com/questions/286629/what-is-a-memory-fence
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)