как уже упоминалось, по умолчанию используется tlab.Поведение описывается в этом глоссарии следующим образом
TLAB
Thread-local allocation buffer. Used to allocate heap space quickly without synchronization. Compiled code has a "fast path" of a few instructions which tries to bump a high-water mark in the current thread's TLAB, successfully allocating an object if the bumped mark falls before a TLAB-specific limit address.
Более подробная информация о размерах в этом блоге и все подробности, которые вы можете пожелать в этом блоге.
Короче говоря, он является локальным для потока, если только TLAB не заполнен, в этом случае вам нужно будет подключиться к общему пулу, а это операция CAS.
Другим осложняющим фактором может быть thisошибка , которая описывает ложное совместное использование в маркировке карты, которая не является блокировкой как таковой, но ухудшит производительность (если именно поэтому вы спрашиваете о блокировке).Похоже, это исправлено в java7.