TLAB зарезервирован исключительно для выделений , выполненных одним потоком. Это все еще память в одном и том же общем адресном пространстве всех потоков. Другими словами, это может быть доступ к всеми потоками.
Конечно, к объекту могут обращаться только другие потоки, если вы сохраняете ссылку на него в общей переменной. Поскольку в правильно работающей JVM другие потоки могут обращаться к памяти только путем обхода такой ссылки, это означает, что другие потоки могут обращаться только к памяти TLAB, которая была выделена для объекта уже владельцем, и что, по крайней мере, минимальная инициализация работа, гарантированная JMM, была проделана потоком-владельцем до того, как ссылка станет наблюдаемой.
Эта внутренняя корректность c подразумевает, что другим потокам не нужно видеть фактическое состояние выделения TLAB, поэтому обслуживание информация может быть действительно локальной для потока, например, храниться в регистрах ЦП.
Независимо от того, является ли объект общим для нескольких потоков или нет, он будет перемещен только из своего первоначального распределения, если он сохранился до следующего сборка мусора (если используется копирующий сборщик). Но к тому времени, когда это происходит, память, в которую был помещен объект, больше не является TLAB, поскольку то, что делало эту память TLAB, было тем способом, которым она использовалась.
После того, как область памяти, ранее использовавшаяся как TLAB был очищен сборщиком мусора, он также может быть переназначен как новый TLAB другому потоку (или использован для другой цели).