29 votes

Qu'est ce qu'un TLAB (Thread Local de l'Allocation de la mémoire Tampon)?

Je ne pouvais pas trouver une source complète qui permettrait d'expliquer le concept de manière claire. Ma compréhension est qu'un thread est donné une certaine partie de la mémoire dans l'eden où il alloue de nouveaux objets. Un autre thread va finir par avoir un peu consécutives morceau d'eden. Qu'advient-il si le premier thread s'exécute hors de la zone de libre dans son TLAB? Serait-il demander un nouveau morceau d'eden?

36voto

raphw Points 6008

L'idée d'un TLAB est de réduire le besoin de synchronisation entre les threads. À l'aide de TLABs, ce besoin est réduite comme n'importe quel thread a un endroit, il peut l'utiliser et s'attendre à ce que il est le seul thread à l'aide de cette zone. En supposant qu'une TLAB peut contenir 100 objets, un thread aurait seulement besoin d'acquérir un verrou pour réclamer plus de mémoire lors de l'attribution de la 101 de l'objet. Sans TLABs, ce qui serait requis pour chaque objet. L'inconvénient est bien sûr que vous pouvez potentiellement perdre de l'espace.

Les objets volumineux sont généralement attribuées à l'extérieur d'un TLAB comme ils annuler l'avantage de réduire la fréquence de synchronisation de l'allocation de mémoire. Certains objets ne pourraient même pas s'adapter à l'intérieur d'un TLAB.

Vous pouvez définir la taille d'un TLAB à l'aide de l' -XX:TLABSize pavillon, mais en général, je ne vous recommande pas de jouer avec ces paramètres, sauf si vous avez vraiment découvert un problème que vous pouvez résoudre par qui.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X