Я знаю, что модель памяти JVM создана для самого низкого общего знаменателя процессоров, поэтому она должна принять самую слабую возможную модель процессора, на котором может работать JVM (например, ARM).
Теперь, учитывая, что x64 имеет довольно сильную модель памяти, какие методы синхронизации можно игнорировать, полагая, что моя программа будет работать только на 64-битных процессорах x86? Также это применимо, когда моя программа запускается через виртуализацию?
Пример:
Известно, что для модели памяти JVM требуется синхронизировать доступ чтения/записи к длинным и удвоенным, но можно предположить, что чтение/запись других 32-битных примитивов, таких как int, float и т.д., Являются атомарными.
Однако, если я знаю, что я работаю на 64-битной машине x86, могу ли я игнорировать использование блокировок на longs/doubles, зная, что процессор будет читать/записывать 64-битные значения и просто сохранять их волатильными (например, с Ints/поплавки)?