puntos de conocimiento java (1)

1. Describir el proceso para crear objetos Java?

    La detección de si la clase se carga 1,1

    Ya sea que si la oportunidad virtual cuando una nueva instrucción, en primer lugar para comprobar los parámetros de este comando puede localizar un símbolo de referencia en un conjunto de constantes de clase, y conocer este referencias simbólicas en nombre de una clase que se ha cargado, analizada e inicializado. Si no es así, entonces debe realizar el proceso de carga de clases apropiado.

    1.2 asigna memoria para la nueva clase

    Después de un examen por el cargador de clase, entonces la máquina virtual de memoria de asignación de objetos recién nacido, el tamaño de memoria requerido puede ser completamente establecido después de la clase tiene objetos de carga terminados.

    1,3 inicialización valor de cero

    Después de la asignación de memoria se ha completado, las necesidades de la máquina virtual para asignar espacio de memoria se inicializa a un valor de cero (sin incluir los objetos de administración), los ejemplos de este paso para asegurar que el campo de objeto no se puede asignar un valor inicial en el código Java utilizado directamente, programa de acceso a un valor cero de los tipos de datos de campos correspondientes.

    1.4 realizar los ajustes necesarios

    máquina virtual está sujeto a los ajustes necesarios, por ejemplo, que este objeto es una instancia de la clase, cómo encontrar información como metadatos, objeto hash hacer, edad sub-generación de información de destino GC. Esta información se almacena en el objeto de encabezado objeto en.

    1.5 Uso del método init

    Después de la terminación de la obra anterior, desde el punto de vista de las máquinas virtuales, un nuevo objeto ha sido creado, pero desde la perspectiva del punto de vista del programa Java, la creación de objetos acaba de comenzar, el método <int> no se ha realizado, todos los campos están siendo cero. Así que, en general, después de la ejecución de las nuevas instrucciones que a continuación, ejecutar <init> método, de acuerdo con los deseos del programador para inicializar el objeto, de modo que un objeto real considerado emerger completamente.

2.java manera de crear un objeto?

Utilizar la nueva palabra clave } → se llama al constructor
Utilizando el método newInstance de Clase clase } → se llama al constructor
Los métodos constructores utilizando newInstance clase } → se llama al constructor
Utilizando el método de clon } → no llamar al constructor
uso deserialización } → no llamar al constructor

3. charla sobre el modelo de memoria de Java?

    Java Specification modelo de memoria de la máquina virtual de Java y la memoria del ordenador es la forma de trabajar juntos. máquina virtual Java es un modelo completo de un ordenador, este modelo incluye un modelo de memoria, también conocido como modelo de memoria java.

    java modelo de memoria poner dentro de la máquina virtual Java se divide en montón hilo y la pila.

    Cada máquina virtual de Java hilo conductor tiene su propia pila de subprocesos. Esta pila de hilo incluye información relacionada con el método del hilo que llama es el punto de ejecución actual. Un hilo sólo puede acceder a su propia pila de hilo. La creación de un hilo variables locales no son visibles para otros hilos, solamente pueda ser visible. Cada hilo tiene una versión única de cada variable local.

    Montón que contiene todos los objetos creados en el programa Java, independientemente de que se crea objeto. Esto incluye la versión original del tipo de objeto. Si se crea un objeto y luego asignado a una variable local, o se utiliza como una variable miembro de otro objeto, el objeto se fija almacenada en el montón.

   pila de llamadas locales y las variables locales almacenados en la pila de subprocesos objetos almacenados en el montón.

las variables 4.static almacenan?   

      1, la zona de pila (stack) - lanzado asignados automáticamente por el compilador, almacenamiento de valor de parámetro de la función , las variables locales y similares.

    2, el área heap (montón) - normalmente asignado por el programador se libera, si el programador no libera, puede ser recuperado por el final de la OS procedimiento. Tenga en cuenta que se trata de una estructura de datos de la pila totalmente diferente, que toca la lista de distribución similar.

    3, la zona global (zona de reposo) (estática) - variables globales y estáticos se almacenan en uno de a, inicializan las variables globales y estáticas en una zona, las variables globales sin inicializar y variables estáticas sin inicializar adyacente otra pieza de la región. Después de que el programa tiene autorización del sistema.

    zona 4, literales - constante de cadena se coloca aquí. Tras el final del programa lanzado por el sistema.

    5, el área de código de programa - código binario cuerpo de la función almacenada. 

5.volatile contar?

    volátil es un modificador de tipo, que está diseñado para ser modificado por el acceso diferentes hilos y modificar variables. definición de tipo volátil es variable, se extraen de entre el sistema de memoria correspondiente cada vez que se utiliza. Sin utilizar la memoria caché. Después de modificar las variables miembro volátiles, todos los hilos en cualquier momento que vea los valores de las variables son los mismos.

     Una vez que una variable compartida (variables miembro de la clase, la clase de variables miembro estáticas) después de haber sido declarado volátil, y luego tener las dos semánticas:

1) para asegurar la visibilidad cuando diferentes hilos a esta operación variables, que es un hilo modifica el valor de una variable, este nuevo valor a otro hilo es inmediatamente visible.  

2) reordenamiento de comandos prohibición.

6. ¿Cómo enhebrar la sincronización?

    6. 1. El  método de sincronización qué palabras clave modificación?  Método de sincronización Modificado con la palabra clave sincronizada

    6.2.  La sincronización Hay varios métodos para lograr, son lo que? Se sincronizan, espera y notificar

      wait (): hacer que un hilo en un estado de espera, y libera el bloqueo mantenido por el objeto.
      sleep (): crea un hilo conductor en un estado de sueño, es una llamada a un método estático este método a excepción de captura InterruptedException.
      Notify (): despertar un hilo en un estado de espera, observando que en el momento en que este método se llama, no se despierta hasta exactamente estado de espera de un hilo, pero que está determinada por el hilo JVM se despierta, pero no por orden de prioridad.
      notityAll (): despertar un hilo en un estado de espera en absoluto, nota que no todos los hilos de despertar para bloquear un objeto, sino dejar que compiten.

    6.3. Use variables de campo especiales (volátil) implementar la sincronización hilo, no puede ser modificado variables finales

        a.volatile palabras clave proporciona acceso al dominio de un lanzamiento de bloqueo variable de mecanismo de 
        b. El uso de dominio modificación volátil es equivalente a decir que la máquina virtual al dominio podría haber otras actualizaciones de rosca 
        c. Así que cada vez que utilice ese dominio se volverá a calcular, y en lugar de utilizar el valor en el registro 
        d.volatile no proporciona ninguna operación atómica, no se puede utilizar para modificar el último tipo de variables

    6.4 El uso de bloqueos de reutilización para la sincronización hilo

    6.5. Utilice variables locales para lograr la sincronización hilo

7. La diferencia entre el proceso y el hilo?

    (1) espacio de direcciones: una unidad de ejecución dentro del proceso, el proceso tiene al menos un hilo, que comparten el espacio de direcciones del proceso, y el proceso tiene su propio espacio de direcciones independiente; 

    (2) los propietarios de recursos: el proceso es propiedad de una unidad de asignación de recursos y los recursos dentro de los mismos hilos de proceso comparten el proceso de 

    (3) Un hilo es la unidad básica de la programación del procesador, pero el proceso no lo es. 

    (4) los cuales pueden ejecutar concurrentemente.

    El proceso es la unidad básica de la asignación de recursos, el hilo es la unidad básica de la programación. Proceso contiene hilos, los hilos comparten los recursos de proceso.

    

    

Publicado 36 artículos originales · ganado elogios 19 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_27182767/article/details/79701987
Recomendado
Clasificación