Maison > Java > javaDidacticiel > le corps du texte

Quelle est la différence entre StackOverflowError et OutOfMemoryError en Java ?

WBOY
Libérer: 2023-08-27 12:09:06
avant
1049 Les gens l'ont consulté

Quelle est la différence entre StackOverflowError et OutOfMemoryError en Java ?

Chaque fois que nous exécutons un programme Java, le système d'exploitation alloue de la mémoire à la JVM. La JVM divise cette mémoire en deux parties. L’une est la mémoire de pile et l’autre la mémoire de tas. La pile est utilisée pour exécuter des méthodes et le tas est utilisé pour stocker des objets. Lorsque la pile est pleine, la JVM renvoie java.lang.StackOverflowError ; lorsque le tas est plein, la JVM renvoie java.lang.OutOfMemoryError.

StackOverflowError

  • La pile est utilisée pour l'exécution de la méthode. Pour chaque appel de méthode, un bloc est créé dans la mémoire de la pile
  • Les données liées à la méthode (telles que les paramètres, les variables locales ou les références d'objet) sont stockées dans ce bloc.
  • Une fois l'exécution de la méthode terminée, le bloc est supprimé de la pile avec les données qui y sont stockées.
  • Chaque fois que nous appelons une méthode, elle doit terminer son exécution et quitter la mémoire de la pile.
  • Si la méthode reste dans la pile, alors la pile sera pleine et la JVM lancera java.lang.StackOverflowError.

OutOfMemoryError

  • Les objets que nous créons en Java sont stockés dans la mémoire tas. Lorsque ces objets ne sont plus nécessaires, ils doivent être supprimés de la mémoire.
  • Garbage Collector supprime les objets inutiles de la mémoire tas.
  • Si nos objets ont des références live, le garbage collector ne les supprimera pas. Il supprime uniquement les objets qui n'ont aucune référence active.
  • Chaque fois que nous appelons une méthode, elle doit terminer son exécution et quitter la mémoire de la pile.
  • S'il n'y a plus d'espace pour le nouvel objet dans la mémoire tas, la JVM lancera java.lang.OutOfMemoryError.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal