như đã đề cập, mặc định là sử dụng tlab. Các behavious được mô tả trong this glossary như sau
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.
Chi tiết về kích thước trong this blog & tất cả các chi tiết bạn có thể muốn trong this blog.
Tóm lại đó là chuỗi địa phương trừ khi TLAB đầy, trong trường hợp đó bạn sẽ cần phải nhấn vào nhóm dùng chung và đây là một hoạt động CAS.
Một yếu tố phức tạp khác có thể là this bug mô tả chia sẻ sai trong đánh dấu thẻ không phải là khóa như vậy nhưng sẽ làm tổn thương hiệu suất (nếu đây là lý do bạn hỏi về khóa). Dường như điều này là cố định trong java7 mặc dù.
+1: UseTLAB được bật theo mặc định trên Sun/Oracle JVM. –
@PeterLawrey: Cảm ơn - đã chỉnh sửa một cách thích hợp. –