По сути, если ваши объекты заблокированы только одним потоком, JVM может выполнить оптимизацию и «сместить» этот объект к этому потоку таким образом, чтобы последующие элементарные операции над объектом не требовали затрат на синхронизацию. Я предполагаю, что это, как правило, направлено на чрезмерно консервативный код, который выполняет блокировки на объектах, никогда не подвергая их другому потоку. Фактические накладные расходы на синхронизацию включатся только после того, как другой поток попытается получить блокировку объекта.
Он включен по умолчанию в Java 6.
-XX: + UseBiasedLocking
Включает технику для повышения производительности несанкционированной синхронизации. Объект «смещен» к потоку, который первым получает свой монитор через байт-код монитора или синхронизированный вызов метода; последующие операции, связанные с монитором, выполняемые этим потоком, на многопроцессорных компьютерах выполняются относительно быстрее. Некоторые приложения со значительными объемами неконтролируемой синхронизации могут достигать значительных ускорений с включенным этим флагом; в некоторых приложениях с определенными схемами блокировки могут наблюдаться замедления, хотя были предприняты попытки минимизировать негативное влияние.