Ответ 1
Идея TLAB заключается в уменьшении необходимости синхронизации между потоками. Используя TLAB, эта потребность уменьшается, поскольку любой поток имеет область, которую он может использовать, и ожидайте, что это единственная нить, использующая эту область. Предполагая, что TLAB может содержать 100 объектов, потоку потребуется всего лишь захватить блокировку, чтобы требовать больше памяти при распределении объекта 101. Без TLAB это потребуется для каждого объекта. Недостатком, конечно же, является то, что вы потенциально теряете пространство.
Большие объекты обычно выделяются вне TLAB, поскольку они лишают преимущество уменьшения частоты синхронизации памяти. Некоторые объекты могут даже не вписываться в TLAB.
Вы можете установить размер TLAB с помощью флага -XX:TLABSize
, но обычно я не рекомендую вам связываться с этими настройками, если вы действительно не обнаружили проблему, которую вы можете решить.