当前位置:网站首页>Problèmes de concurrence dans l'allocation de mémoire en tas

Problèmes de concurrence dans l'allocation de mémoire en tas

2022-06-24 22:27:00 Nice2cu Code

Dans le processus de développement réel,Crée souvent des objets,En tant que machine virtuelle,La sécurité du fil doit être assurée.En général, les machines virtuelles utilisent deux méthodes pour sécuriser les fils

Un.、CAS + Échec de retry

CASEst une façon d'implémenter une serrure optimiste,Supposons qu'il n'y ait pas de conflit pour effectuer une opération à la fois sans verrouillage,Si l'opération échoue en raison d'un conflit, réessayez,Jusqu'à ce que ça marche.Voir le blog pour plus de détails,Adresse de transfert:JavaProgrammation simultanée Pas de serrure(CAS)

2.、TLAB

TLABOui.JavaLe jardin d'Eden de l'espace de tas est divisé pour chaqueThreadEspace mémoire pour,Allouer de la mémoire spécifiquement pour les objets créés par ce thread dans cette zone.

Son objectif principal est d'allouer de la mémoire dans un environnement simultané,Réduire la concurrence entre les Threads pour l'espace mémoire,Accélérer l'allocation de mémoire.

TLABEn fait, c'est toujoursJavaEn tas,Donc, dansTLABObjet de la zone,Peut également être accédé par d'autres Threads.

Si non utiliséTLAB,Plusieurs Threads simultanés créent des objets,Lors de l'allocation de mémoire,C'est possible.JavaApplication de la même position dans le tas,Cela nécessite un verrouillage de cette partie de l'espace mémoire ou l'adoption deCASAttendre que l'Opération assure la sécurité du fil,C'est - à - dire que la zone n'est assignée qu'à un seul thread.

UtiliséTLABAprès,JVMSera dans la mémoire heap pour chaque threadRéservéUne zone mémoire,Au moment où l'opération de réservation a eu lieu,Doit être verrouillé ou adoptéCASProtection par des opérations similaires,Évitez de réserver la même zone à plusieurs fils.Une fois qu'une zone a été assignée à un thread,Plus tard, lorsque le thread doit allouer de la mémoire,La priorité sera accordée aux demandes dans ce domaine.Cette zone est pour ce threadAllocation de mémoireCette opération est privée au fil,Il n'est donc pas nécessaire d'effectuer des opérations telles que le verrouillage lors de la distribution,Cela protège les fils et augmente la vitesse d'allocation.

Attention!: Lorsque le thread crée un objet supérieur àTLABMémoire restante dans ouTLABLorsque la mémoire est épuisée,Re - AdoptionCAS + Échec de l'allocation de mémoire par retry.

原网站

版权声明
本文为[Nice2cu Code]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206241615541818.html