Zone de données d'exécution JVM_07 Disposition de la mémoire instanciée à 4 objets et emplacement d'accès

1. L'instanciation de l'objet

Insérez la description de l'image ici
1.

  • Nouveau

    • La méthode la plus courante
      Variation 1: Méthode statique de Xxx
      Variation 2: Méthode statique de XxBuilder / XxoxFactory
  • NewInstance () de la classe: la méthode de réflexion ne peut appeler que le constructeur du paramètre null et l'autorisation doit être publique

  • NewInstance du constructeur (Xxx): de manière réflexive, vous pouvez appeler le constructeur avec des paramètres vides et paramétrés, et aucune autorisation n'est requise

  • Utilisez clone (): n'appelez aucun constructeur, la classe actuelle doit implémenter l'interface clonable et implémenter clone ()

  • Utiliser la désérialisation: obtenir un flux binaire d'un objet à partir d'un fichier et du réseau

  • Objenesis de la bibliothèque tierce

  • Déterminer si la classe correspondant à l'objet est chargée, liée, initialisée

  • Allouer de la mémoire à l'objet

    • Si la mémoire est régulière et qu'un pointeur entre en collision

    • Si la mémoire est irrégulière:

      • La machine virtuelle doit maintenir une liste
      • Attribution gratuite de la liste
  • Gérer les problèmes de sécurité de la concurrence

    • Utilisez CAS avec échec de nouvelle tentative pour garantir l'atomicité de la mise à jour
    • Chaque thread se voit attribuer un TLAB à l'avance
  • Initialisez l'espace alloué - toutes les propriétés sont définies sur des valeurs par défaut pour garantir que les champs d'instance d'objet peuvent être utilisés directement lorsqu'ils ne sont pas affectés.
    Définissez l'en-tête d'objet de l'objet

  • Exécutez la méthode init pour initialiser

2. Disposition de la mémoire d'objets

1. En-tête: métadonnées d'exécution Pointeurs de type Markword et KlassInstance
2. Données d'instance InstanceData
3. Alignement et remplissage de remplissage

public class CustomerTest {
    public static void main(String[] args) {
        Customer cust = new Customer();
    }
}

Insérez la description de l'image ici

3. Accéder à l'emplacement de l'objet

Comment la JVM accède-t-elle à ses instances d'objet internes via les références d'objet dans le cadre de pile? -> Positionnement, accessible par référence sur la pile
Insérez la description de l'image ici

1. Accès à la poignée
Insérez la description de l'image ici

2. Pointeur direct (adopté par HotSpot)
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_43141726/article/details/114853569
conseillé
Classement