tlab에 대해 알아보기전에 tlab이 없을 때 발생하는 문제를 알아보자.

멀티 스레딩을 사용하는 애플리케이션에서 각 스레드가 동시에 메모리를 할당하려고 하는 경우이다.
각 스레드가 GC에서 메모리를 할당할 공간을 찾고, 동시에 같은 곳에 메모리를 할당하려고 할 수 있다.

이러한 문제를 해결하기 위해 각 스레드는 메모리를 할당할 공간인 Eden Space에 락을 걸고, 할당을 진행해야한다.
당연히 이러한 락은 애플리케이션에서 메모리를 할당하려는 모든 스레드를 멈춰세우기 때문에 성능에 영향을 준다.
TLAB은 Thread-Local Allocation Buffer의 약자로, 각 스레드별로 메모리를 할당할 공간을 정해둔 것이다.

이를 통해 멀티스레드 환경에서도 락 없이 안전하게 메모리 할당을 진행할 수 있다.
또 만약 어떠한 스레드의 TLAB이 꽉차게 되면 TLAB이 아닌 공유된 공간에서 할당을 진행하는데, 이때 공유공간에만 락을 걸게 되므로 TLAB을 사용중인 다른 스레드의 할당에 영향을 주지 않는다.
이런 최적화 기술들을 볼수록 멋진 개발자들의 지혜에 감탄하게 된다...