Paramètres des paramètres de test:
1. boucle pour appeler un nouveau A () pour atteindre un débordement de tas, java.lang.outofMemoryError: Java tas espace,
Paramètres de la machine virtuelle: -xms1m -xmx1m -xx: + heapdumponoutofMemoryError, Explication: Réglage -xmx et -xms à la même chose peut éviter l'expansion automatique du tas. -Xx: + HeapDumponOutofMemoryError permet à la machine virtuelle de vider l'instantané de vidage de mémoire de tas actuel lorsqu'une exception de débordement de mémoire se produit.
// while (true) {// new a (). do2 (); //}2. En boucle pour appeler des références d'objet pour atteindre le débordement de pile. java.lang.stackoverflowerror,
Paramètres de machine virtuelle: -xss128k,
Explication: Réglez la taille de la pile de machines virtuelles à 128kn
Dans un seul thread, l'erreur ci-dessus sera lancée, que le cadre de pile soit trop grand ou que la capacité de pile de machine virtuelle soit trop petite et que la mémoire ne peut pas être allouée.
void do2 () {do2 ();};3. En boucle pour appeler la méthode String.intern () pour écrire dans le pool constant, et le pool constant déborde. java.lang.outofMemoryError: Permgen Space
while (true) {list.add (string.valueof (i ++). Intern ()); }Paramètres de machine virtuelle: -xx: permSize = 10m -xx: maxpermSize = 10m,
Explication: Indique la capacité et la capacité maximale de la génération permanente initialement allouée par le JVM. (La zone permanente a une mémoire insuffisante, et tout est sur le tas après 1,8. Méthode Zone = Génération permanente, Permgen Space ", c'est-à-dire la génération permanente)
Quatre états de référence: (l'héritage de la classe étend la référence faible <car>)
1. Quotion forte: objet obj = nouvel objet (). Tant que la citation forte existe toujours, le collecteur des ordures ne collectera jamais l'objet référencé;
2. Softreference: Softreference, les objets associés à la référence douce seront recyclés en cas de mémoire insuffisante. S'il n'y a pas assez de mémoire dans ce recyclage, une exception de débordement de mémoire sera lancée; Softreference <byte []> sr = new softreference <byte []> (octets);
3. Référence faible: faible référence, les objets associés à des références faibles ne peuvent survivre que jusqu'à la prochaine collection de déchets;
4. Référence virtuelle: Phantomreference, la référence virtuelle est utilisée pour suivre l'état de recyclage des objets.
Temps temporaire pour déclencher GC:
1. Lorsque la génération plus jeune ou la génération plus âgée est pleine, la machine virtuelle Java ne peut plus allouer un espace mémoire pour de nouveaux objets, la machine virtuelle Java déclenchera un GC pour recycler des objets qui ne seront plus utilisés.
2. System.gc (), runtime.getRuntime (). GC () déclenchent généralement un GC complet et au moins un GC mineur, et il peut ne pas être recyclé immédiatement.
3. Déclenché lorsque le serveur est inactif ou que les personnes âgées sont dans le tas.
Recyclez l'espace occupé par l'objet sans référence, pas l'objet lui-même.
Mais il est également imprévisible à quel moment le véritable mécanisme de collecte des ordures commencera à agir (source non ouverte), qui est le même principe que le fil préventif lorsqu'il prend effet.
Algorithme de collecte générationnel:
Collectionneurs de nouvelle génération et collectionneurs de génération senior.
Algorithme de compensation de marque
Algorithme de l'organisation de la marque
La différence entre le débordement de la mémoire et la fuite de mémoire:
1. Débours de mémoire: le programme n'a pas assez d'espace lors de l'allocation de la mémoire.
2. Fuite de mémoire: une fois qu'un programme s'applique à la mémoire, il n'a aucun moyen de libérer de la mémoire. Il occupe toujours de la mémoire, c'est-à-dire que l'objet alloué peut être atteint mais est inutile. Les fuites de mémoire sont généralement causées par un grand objet dans la mémoire, mais ne peuvent pas être libérés. Provoquera un débordement de mémoire.
Parallèle et concurrentiel:
1. Parallèle: fait référence au fonctionnement de plusieurs fils de collecteur de déchets;
2. Concurrence: fait référence au fil d'utilisateur et le fil du fil du collecteur des ordures fonctionne simultanément.
Mécanisme de chargement de classe:
1. Chargement (génération de java.lang.classe objet), vérification, préparation, analyse, initialisation (processus d'affectation), utilisation (utilisation) et déchargement (déchargement)
2. Vérifiez (si les informations contenues dans le flux d'octets sont correctes et si elle est conforme à JVM),
Préparer (attribuer la valeur aux variables de classe, c'est-à-dire les variables statiques, attribuer 0),
Les trois parties de l'analyse (remplacer les références symboliques par des références directes, un fichier de classe à la mémoire) sont collectivement appelés liens (lien)
3. Étape de chargement: Obtenez le flux binaire du fichier .class;
Mettez le contenu des informations de classe, des variables statiques, des décodes et des constantes dans la zone de la méthode
Générez un objet java.lang.classe représentant ce fichier .class en mémoire, comme portail d'accès pour diverses données dans la zone de méthode de cette classe.
4. Ce que vous faites à l'étape d'initialisation est d'appeler la méthode du client> pour attribuer la variable statique à la valeur spécifiée de l'utilisateur et exécuter des blocs de code statique.
Modèle de délégation parent: (Démarrer le chargeur de classe> Chardeur de classe étendue> chargeur de classe d'application> chargeur de classe personnalisé)
Un chargeur de classe reçoit une demande de chargement de classe et délégue la demande au chargeur de classe parent. Ce n'est qu'après que la classe parent ne parvient pas à la terminer qu'elle le terminera vous-même.
Principe d'occurrence:
Il n'est pas possible de se fier uniquement à synchronisé et volatile pour contraindre l'ordre dans la mémoire Java. Cela dépend des règles d'ordre d'appel du programme pour déterminer l'ordre des setteurs et des getters.
GC mineur: nettoyer la mémoire de la ceinture jeune, incapable d'allouer de l'espace à un nouvel objet.
MAJOR GC: C'est pour nettoyer la vieillesse, et de nombreux GC majeurs sont déclenchés par un GC mineur
GC complet: il s'agit de nettoyer tout l'espace de tas - y compris la jeune génération et la génération plus âgée