www whatwg what spec language español 3wc java garbage-collection java-memory-model

java - whatwg - ¿Qué es un TLAB(Thread Local Allocation Buffer)?



whatwg español (1)

La idea de un TLAB es reducir la necesidad de sincronización entre subprocesos. Al usar TLAB, esta necesidad se reduce ya que cualquier subproceso tiene un área que puede usar y espera que sea el único que use esta área. Suponiendo que un TLAB puede contener 100 objetos, un subproceso solo tendría que adquirir un bloqueo para reclamar más memoria al asignar el objeto 101. Sin TLABs, esto sería requerido para cada objeto. La desventaja es que puedes perder espacio.

Los objetos grandes normalmente se asignan fuera de un TLAB, ya que anulan la ventaja de reducir la frecuencia de asignación de memoria sincronizada. Algunos objetos ni siquiera caben dentro de un TLAB.

Puede establecer el tamaño de un TLAB utilizando el -XX:TLABSize , pero generalmente no le recomiendo que ensucie con estas configuraciones a menos que realmente descubra un problema que pueda resolver con eso.

No pude encontrar una fuente completa que explicara el concepto de una manera clara. Mi entendimiento es que a un hilo se le da un poco de memoria en el eden donde asigna nuevos objetos. Un hilo de la competencia terminará teniendo un trozo de eden algo consecutivo. ¿Qué sucede si el primer hilo se queda sin área libre en su TLAB? ¿Pediría un nuevo trozo de eden?