Área de datos de tiempo de ejecución JVM_07 Ubicación de acceso y disposición de memoria instanciada de 4 objetos

1. La instanciación del objeto

Inserte la descripción de la imagen aquí
1.

  • nuevo

    • La forma más común
      Variación 1: método estático de Xxx
      Variación 2: método estático de XxBuilder / XxoxFactory
  • NewInstance () de la clase: el método de reflexión solo puede llamar al constructor del parámetro nulo, y el permiso debe ser público

  • NewInstance del constructor (Xxx): de manera reflexiva, puede llamar al constructor con parámetros vacíos y parametrizados, y no hay requisitos de permisos

  • Use clone (): no llame a ningún constructor, la clase actual necesita implementar la interfaz Cloneable e implementar clone ()

  • Use la deserialización: obtenga una secuencia binaria de un objeto desde un archivo y desde la red

  • Biblioteca de terceros Objenesis

  • Determinar si la clase correspondiente al objeto está cargada, vinculada, inicializada

  • Asignar memoria para el objeto

    • Si la memoria es regular y choca un puntero

    • Si la memoria es irregular:

      • La máquina virtual necesita mantener una lista
      • Asignación de lista gratuita
  • Manejo de problemas de seguridad de simultaneidad

    • Utilice CAS con reintento fallido para garantizar la atomicidad de la actualización
    • A cada hilo se le asigna un TLAB por adelantado
  • Inicialice el espacio asignado: todas las propiedades se establecen en valores predeterminados para garantizar que los campos de instancia del objeto se puedan usar directamente cuando no estén asignados.
    Establecer el encabezado del objeto del objeto

  • Ejecute el método init para inicializar

2. Disposición de la memoria de objetos

1. Encabezado: Punteros de tipo Markword y KlassInstance de metadatos en tiempo de ejecución
2. Datos de instancia InstanceData
3. Alineación de relleno y relleno

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

Inserte la descripción de la imagen aquí

3. Acceda a la ubicación del objeto

¿Cómo accede la JVM a sus instancias de objetos internos a través de las referencias de objetos en el marco de pila? -> Posicionamiento, al que se accede mediante referencia en la pila
Inserte la descripción de la imagen aquí

1. Manejar el acceso
Inserte la descripción de la imagen aquí

2. Puntero directo (adoptado por HotSpot)
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43141726/article/details/114853569
Recomendado
Clasificación