Java VM如何处理MT上下文中的缓存行和内存对齐?

时间:2011-05-27 22:05:32

标签: java caching jvm memory-alignment

根据主题,如果在C / C ++中 easy 找到缓存行大小并在开发高效MT代码时处理此问题,那么Java VM如何处理这个问题?

干杯

2 个答案:

答案 0 :(得分:3)

一般情况下不会。你必须自己解决这个问题。如果确实很重要,您可能必须使用JNI来获取有关系统的低级详细信息。

另一方面,Java从一开始就用语言支持编写MT应用程序。

答案 1 :(得分:2)

从Java 8开始,Java很可能会开始处理这个问题。JEP 142声明:

  

当两个不同内核使用的两个内存位置最终位于同一缓存行且至少有一个内核正在执行写入时,会发生内存争用。对于高度争用的内存位置,这可能是严重的性能和可伸缩性问题。此增强功能的目的是避免核心之间的内存争用,至少在开发过程中我们可以轻松识别的字段上。

evidence that this is actually happening并且不是蒸发器。