"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment éviter \"java.lang.OutOfMemoryError : limite de surcharge GC dépassée\" lorsque vous travaillez avec de nombreux objets HashMap ?

Comment éviter \"java.lang.OutOfMemoryError : limite de surcharge GC dépassée\" lorsque vous travaillez avec de nombreux objets HashMap ?

Publié le 2024-11-23
Parcourir:450

How to avoid \

OutOfMemoryError : Limite de surcharge du GC dépassée

Question :

Je reçois un message "Java .lang.OutOfMemoryError : erreur « GC Overhead Limit wanted » dans un programme qui crée plusieurs objets HashMap avec un petit texte entrées. Existe-t-il une alternative programmatique pour augmenter la taille du tas ou désactiver la vérification des erreurs ?

Réponse :

Oui, plusieurs alternatives programmatiques peuvent résoudre ce problème :

  • Gérer la taille du lot : Travaillez avec des lots plus petits d'objets HashMap à traiter simultanément. Cela réduit la charge de mémoire sur le ramasse-miettes.
  • Identifier les chaînes en double : Utilisez la méthode String.intern() sur les chaînes en double avant de les ajouter au HashMap. Cela garantit qu'une seule copie de chaque chaîne est stockée en mémoire, libérant ainsi de l'espace.
  • Optimiser l'initialisation de HashMap : Utilisez le constructeur HashMap(int initialCapacity, float loadFactor) pour spécifier la capacité initiale. et le facteur de charge du HashMap. Cela permet d'optimiser l'utilisation de la mémoire et de réduire la probabilité de déclenchement de la limite de surcharge du GC.
  • Implémentez WeakHashMap : Envisagez d'utiliser un WeakHashMap. Contrairement à un HashMap classique, un WeakHashMap n'empêche pas la récupération de ses clés. Cela peut éviter les fuites de mémoire et réduire la charge sur le GC.

Notez que l'utilisation de la méthode HashMap.clear() effacera en effet les données stockées dans le HashMap, les rendant inutilisables aux fins prévues. Ce n’est donc pas une solution recommandée.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3