Maison  >  Article  >  Java  >  Quelles sont les différences entre le tas Java et la pile

Quelles sont les différences entre le tas Java et la pile

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-11-11 17:09:396299parcourir

Quelles sont les différences entre le tas Java et la pile

Il existe une structure de données séquentielle dernier entré, premier sorti (dernier entré, premier sorti) comme une pile en Java. Il s'agit de java.util.Stack. Dans ce cas, cela rendra inévitablement beaucoup de gens plus confus quant à la question précédente. En fait, le tas et la pile sont tous deux des parties de la mémoire et ont des fonctions différentes, et un programme doit allouer de la mémoire dans cette zone. Comme nous le savons tous, tous les programmes Java s'exécutent dans la machine virtuelle JVM. Ce que nous introduisons ici est naturellement le tas et la pile dans la mémoire (virtuelle) JVM.

Différence

La différence entre le tas et la pile en Java est naturellement une question courante dans les entretiens. Les points suivants sont les différences spécifiques :

<.>Chacun effectue ses propres tâches

La principale différence est que la mémoire de pile est utilisée pour stocker les variables locales et les appels de méthode.

La mémoire tas est utilisée pour stocker des objets en Java. Qu'il s'agisse de variables membres, de variables locales ou de variables de classe, les objets vers lesquels elles pointent sont stockés dans la mémoire tas.

Exclusif ou partagé

La mémoire de pile appartient à un seul thread. Chaque thread aura une mémoire de pile et les variables qu'il stocke ne peuvent être visibles que dans le fil de discussion. à laquelle il appartient, c'est-à-dire que la mémoire de la pile peut être comprise comme la mémoire privée du thread.

Les objets dans la mémoire tas sont visibles par tous les threads. Les objets dans la mémoire tas sont accessibles par tous les threads.

Erreur d'exception

S'il n'y a pas d'espace disponible dans la mémoire de la pile pour stocker les appels de méthode et les variables locales, la JVM lancera java.lang.StackOverFlowError.

S'il n'y a pas d'espace disponible dans la mémoire du tas pour stocker l'objet généré, la JVM lancera java.lang.OutOfMemoryError.

Taille de l'espace

La mémoire de la pile est beaucoup plus petite que la mémoire du tas Si vous utilisez la récursivité, votre pile se remplira rapidement. Si la récursion n'éclate pas à temps, un problème StackOverFlowError est susceptible de se produire.

Vous pouvez définir la taille de la mémoire de la pile via l'option -Xss. L'option -Xms définit la taille de départ du tas et l'option -Xmx définit la taille maximale du tas.

C'est la différence entre tas et pile en Java. Si vous comprenez bien ce problème, cela peut vous aider à résoudre des problèmes de développement, à analyser l'utilisation de la mémoire de tas et de la mémoire de pile, et même à effectuer des réglages de performances.

Site Web php chinois, un grand nombre de

Tutoriels d'introduction à Java gratuits, bienvenue pour apprendre en ligne !

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!

Déclaration:
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
Article précédent:qu'est-ce que l'API JavaArticle suivant:qu'est-ce que l'API Java