


Qu'est-ce qu'un pool constant en Java ? Introduction au pool constant Java
Le contenu de cet article porte sur ce qu'est le pool constant en Java ? L'introduction du pool constant Java a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère que cela vous sera utile.
Pool constant en Java
Dans la machine virtuelle Java jvm, la répartition de la mémoire est la suivante : tas de machine virtuelle, compteur de programme, pile de méthodes locale, pile de machine virtuelle, zone de méthode.
Le compteur de programme est le pipeline du programme d'exécution jvm et est utilisé pour stocker certaines instructions. La pile de méthodes locale est la pile utilisée par la méthode du système d'exploitation jvm, et. la pile de la machine virtuelle est La pile utilisée pour exécuter le code du programme contient des variables de classe, des informations de classe, des informations de méthode et des pools de constantes (références de symboles, sous forme de tableaux) dans la zone de méthode. Le tas est le tas utilisé par la machine virtuelle. pour exécuter le code du programme.
Constante ? C'est une quantité qui ne peut pas être modifiée une fois la valeur donnée. Les variables membres modifiées avec final sont des constantes.
Qu'est-ce qu'un pool constant de fichiers de classe ?
Nous savons que dans le fichier de classe, il y a des informations sur la version de la classe, des informations sur les champs, des méthodes, des interfaces et d'autres informations, et il y a aussi un pool de constantes. Il s'agit du pool de constantes du fichier de classe.
Quel est le pool de constantes de fichiers de classe principalement utilisé pour stocker ?
stocke divers littéraux et références de symboles générés par la compilation. En informatique, un littéral est une notation utilisée pour exprimer une valeur fixe dans le code source ; une référence symbolique est un ensemble de symboles utilisés pour décrire la cible référencée, qui peut être n'importe quelle forme de littéral, à condition qu'il puisse être utilisé sans ambiguïté. Localisez simplement la cible.
Le pool de constantes existe sous la forme d'un tableau (le tableau est utilisé pour stocker des valeurs de chaîne, pas des références de symboles). Il peut en fait être divisé en deux types, l'un est le pool de constantes statiques et l'autre. le pool de constantes d'exécution. Il y a 11 tables de constantes dans le pool de constantes. Chaque constante du pool de constantes représente une table.
Tableau constant
常量表类型 | 标志值 | 描述 |
---|---|---|
CONSTANT_Utf8 | 1 | UTF-8编码的Unicode字符串 |
CONSTANT_Integer | 3 | int类型的字面值 |
CONSTANT_Float | 4 | float类型的字面值 |
CONSTANT_Long | 5 | long类型的字面值 |
CONSTANT_Double | 6 | double类型的字面值 |
CONSTANT_Class | 7 | 对一个类或者是接口的符号引用 |
CONSTANT_String | 8 | String类型的字面值的引用 |
CONSTANT_Fieldref | 9 | 对一个字段的符号 |
CONSTANT_Methodref | 10 | 对一个类中方法的符号应用 |
CONSTANT_InterfaceMethodref | 11 | 对一个接口中方法的符号引用 |
CONSTANT_NameAndType | 12 | 对一个字段或方法的部分符号引用 |
Piscine constante
Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1 == integer2); // true Integer integer1 = 128; Integer integer2 = 128; System.out.println(integer1 == integer2); // false
En Java, le symbole "==" est utilisé pour comparer les adresses, et le symbole "égal" est le même que le symbole "==" par défaut, les deux qui sont utilisés pour comparer les adresses.
String string1 = "dashu"; String string2 = "dashu"; System.out.println(string1==string2); // true
String string1 = "dashu"; String string3 = new String("dashu"); System.out.println(string1 == string3); // false
String str = new String("dashu"); Combien d'objets sont créés ?
La réponse est : 2 ou 1.
Dans new String("dashu");, si la valeur littérale "dashu" apparaît déjà dans le pool de constantes, alors un seul objet sera créé, sinon, deux objets seront créés.
Principe : Lorsque le littéral "dashu" apparaît, le système recherchera dans le pool de constantes de chaîne pour voir si la même chaîne existe. Si c'est le cas, il ne créera pas de nouvel objet, sinon il utilisera le littéral. La valeur "dashu" crée un objet String. Et new String("dashu"), avec le mot-clé new, signifie qu'il créera définitivement un nouvel objet, puis appellera le constructeur qui reçoit le paramètre String pour l'initialisation.
S'il est remplacé par string1 == string3.intern(), le résultat sera vrai, car l'adresse de la valeur littérale dans le pool constant est renvoyée.
pile : la pile de threads et la pile de méthodes locales
// 源码 public class Object{ private static native void registerNatives(); static{ registerNatives(); } } // 源码 public boolean equals(Object obj){ return (this == obj); } // 源码 public String toString(){ return getClass().getName() + "@" + Integer.toHexString(hasCode()); } // 源码 protected native Object clone() throws CloneNotSupportedException;
modifiées avec le modificateur native
sont appelées via JNI
pour appeler le langage c
ou l'exécution c++
.
Toutes les classes sont des sous-classes de Object
.
万物皆对象 // 源码注解 Class {@code Object} is the root of the class hierarchy. Every class has {@code Object} as a superclass. All objects, including arrays, implements the methods of this class. @ see java.lang Class @ since JDK1.0
Pool de constantes :
Toutes les constantes sont stockées dans le fichier de classe
En Java, on dit que le pool de constantes peut être divisé en deux formes, le pool de constantes statiques et le pool de constantes d'exécution .
Le pool de constantes statiques est le pool de constantes dans le fichier de classe. Il contient des littéraux de chaîne, des informations de classe, des informations de méthode, etc. Il occupe une grande partie de l'espace du fichier de classe. les littéraux et les références aux symboles.
Le pool de constantes d'exécution est le fonctionnement de la machine virtuelle Java après avoir terminé le chargement de la classe. Il charge le pool de constantes dans le fichier de classe dans la mémoire et s'assure qu'il se trouve dans la zone de méthode. L'appel se trouve dans la zone de méthode. Pool de constantes en cours d'exécution, le pool de constantes en cours d'exécution est dynamique et de nouvelles constantes peuvent être générées et placées dans le pool pendant l'exécution, ce qui est le code écrit ci-dessus. Les constantes n'ont pas besoin d'être générées lors de la compilation, de nouvelles sorties peuvent également être générées pendant l'exécution et placées dans le pool.
L'analyse suivante :
Lorsque la machine virtuelle Java jvm exécute une certaine classe, elle doit parcourir la classe depuis le chargement en mémoire jusqu'au déchargement.
L'ensemble du processus comprend le chargement, la vérification, la préparation, l'analyse, l'initialisation, l'utilisation et la désinstallation.
Chargez,
vérifiez si la version du fichier de classe est compatible avec la version actuelle de la machine virtuelle Java, puis le fichier de classe doit répondre aux spécifications de la machine virtuelle.
Préparation, que faut-il préparer ?
Il est nécessaire d'initialiser les membres de la classe à leurs valeurs initiales, sauf pour les variables de classe modifiées par final. Les variables finales sont directement initialisées aux valeurs des variables, alors que les membres de la classe sont différents.
L'analyse, qu'est-ce que l'analyse ?
Il s'agit d'analyser la référence du symbole en une référence directe, qui est notre variable xxx. Cette représentation devient une référence directe. Qu'est-ce qu'une référence directe ? Il s'agit de l'adresse mémoire, telle que notre commune xxx0203r0e.
Initialisation, les variables statiques modifiées ou blocs de code statiques statiques sont composés de constructeurs afin d'initialiser les variables.
Utiliser,
Désinstaller
Lorsque la classe est chargée dans la mémoire, la JVM stockera le contenu du pool de constantes de classe dans le pool de constantes d'exécution, de sorte que le temps d'exécution pool constant Chaque classe en a un.
Le pool de constantes de classe stocke les références aux littéraux et aux symboles. C'est la valeur de référence symbolique de l'objet. Après analyse, la référence symbolique est analysée en une référence directe. Pendant la phase de compilation, la référence symbolique de l'objet. la constante est stockée. Après analyse, c'est une citation directe. Assurez-vous ensuite que chaque JVM n'a qu'une seule copie dans le pool de constantes globales, qui stocke la valeur de référence directe de la constante de chaîne.
S'il est remplacé par `string1 == string3.intern()`, le résultat sera vrai, car l'adresse de la valeur littérale dans le pool constant est renvoyée.La méthode intern() de la classe String recherchera dans le pool de constantes s'il existe une chaîne égale égal().
String string1 = "dashu"; String string3 = new String("dashu"); System.out.println(string1==string3.intern());
S'il n'y a pas de littéral “dashu”
dans le pool de constantes, alors la valeur littérale “dashu”
est d'abord mise dans la table constante, puis l'adresse de la table constante est renvoyée.
Avantages du pool constant
Le pool constant peut éviter la création et la destruction fréquentes d'objets, ce qui entraîne une diminution des performances du système, et réalise également le partage d'objets, ce qui peut économiser espace mémoire et durée d'exécution.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4
