Maison >Java >Javacommencer >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 deTutoriels 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!