Configuración de parámetros de prueba:
1. Bucle para llamar a un nuevo () para lograr el desbordamiento del montón, java.lang.ouTOfMemoryError: Java Heap Space,
Parámetros de la máquina virtual: -xms1m -xmx1m -xx:+HeapDumponoutoFMemoryError, Explicación: Configuración -xmx y -xms al mismo puede evitar la expansión automática de Heap. -Xx:+HeapdumponoutofMemoryError permite que la máquina virtual descarte la instantánea de la memoria de montón actual cuando ocurre una excepción de desbordamiento de memoria.
// while (true) {// new a (). do2 (); //}2. Bucle para llamar a las referencias del objeto para lograr el desbordamiento de la pila. java.lang.stackoverflowerror,
Parámetros de la máquina virtual: -xss128k,
Explicación: Establezca el tamaño de la pila de máquinas virtuales en 128kn
En un solo hilo, el error anterior se lanzará independientemente de si el marco de la pila es demasiado grande o la capacidad de pila de máquina virtual es demasiado pequeña y la memoria no se puede asignar.
void do2 () {do2 ();};3. Logrado para llamar al método String.Intern () para escribir en el grupo constante, y la piscina constante se desborda. java.lang.OutofMemoryError: Espacio de Permgen
while (true) {list.add (string.ValueOf (i ++). Intern ()); }Parámetros de la máquina virtual: -xx: permSize = 10m -xx: maxPermsize = 10m,
Explicación: Indica la capacidad y la capacidad máxima de la generación permanente inicialmente asignada por el JVM. (El área permanente tiene memoria insuficiente, y todo está en el montón después de 1.8. Área de método = Generación permanente, espacio de Permgen ", es decir, generación permanente)
Cuatro estados de referencia: (la herencia de clase se extiende débilleferencia <ar>)
1. Cita fuerte: Obj OBJ = New Object (). Mientras la fuerte cita todavía exista, el recolector de basura nunca recolectará el objeto referenciado;
2. Softreference: Softreference, los objetos asociados con la referencia suave se reciclarán cuando no hay memoria insuficiente. Si no hay suficiente memoria en este reciclaje, se lanzará una excepción de desbordamiento de memoria; Softreference <byte []> sr = new Softreference <byte []> (bytes);
3. Referencia débil: referencia débil, los objetos asociados con referencias débiles solo pueden sobrevivir hasta la próxima recolección de basura;
4. Referencia virtual: Phantomreference, se usa referencia virtual para rastrear el estado de reciclaje de los objetos.
Tiempo temporal para activar GC:
1. Cuando la generación más joven o la generación anterior está llena, la máquina virtual Java ya no puede asignar espacio de memoria para nuevos objetos, entonces la máquina virtual Java activará un GC para reciclar objetos que ya no se utilizarán.
2. System.gc (), Runtime.getRuntime (). Los métodos GC () generalmente desencadenan un GC completo y al menos un GC menor, y puede no reciclarse de inmediato.
3. Activado cuando el servidor está inactivo o los ancianos están en el montón.
Recicla el espacio ocupado por el objeto sin referencias, no el objeto en sí.
Pero también es impredecible en qué punto el mecanismo de recolección de basura real comenzará a tomar medidas (fuente sin abrir), que es el mismo principio que el hilo preventivo cuando entra en vigencia.
Algoritmo de colección generacional:
Coleccionistas de nueva generación y coleccionistas de generación senior.
Algoritmo de limpieza de marcas
Algoritmo de mark-organización
La diferencia entre el desbordamiento de la memoria y la fuga de memoria:
1. Desbordamiento de la memoria: el programa no tiene suficiente espacio al asignar memoria.
2. Flote de memoria: después de que un programa se aplique para la memoria, no tiene forma de liberar la memoria. Siempre ocupa la memoria, es decir, el objeto asignado se puede alcanzar pero es inútil. Las filtraciones de memoria generalmente son causadas por un objeto grande en la memoria, pero no se pueden liberar. Causará desbordamiento de memoria.
Paralelo y concurrencia:
1. Paralelo: se refiere al funcionamiento de múltiples hilos de recolector de basura;
2. Concurrencia: se refiere al hilo del usuario y el hilo del recolector de basura funciona simultáneamente.
Mecanismo de carga de clase:
1. Carga (generación de objeto java.lang.class), verificación, preparación, análisis, inicialización (proceso de asignación), uso (usando) y descarga (descarga)
2. Verifique (si la información contenida en la secuencia de bytes es correcta y si cumple con JVM),
Prepare (asigne el valor a las variables de clase, es decir, variables estáticas, asignar 0),
Las tres partes del análisis (reemplazar referencias simbólicas con referencias directas, archivo de clase a memoria) se denominan colectivamente vinculación (vinculación)
3. Etapa de carga: obtenga la secuencia binaria del archivo .class;
Ponga el contenido de la información de clase, las variables estáticas, los bytecodos y las constantes en el área del método
Genere un objeto java.lang.class que represente este archivo .class en la memoria, como un portal de acceso para varios datos en el área de método de esta clase.
4. Lo que hace en la etapa de inicialización es llamar al método del cliente> para asignar la variable estática al valor especificado por el usuario y ejecutar bloques de código estáticos.
Modelo de delegación matriz: (cargador de clase de inicio> cargador de clase extendida> cargador de clase de aplicación> cargador de clase personalizado)
Un cargador de clase recibe una solicitud de carga de clase y delega la solicitud al cargador de clase principal para completar. Solo después de que la clase principal no logre completarlo, lo completará usted mismo.
Principio de ocurrencia:
No es posible confiar únicamente en sincronizado y volátil para restringir el orden en la memoria Java. Depende de las reglas de orden de llamadas del programa para determinar el orden de los setters y getters.
Menor GC: Limpie la memoria de la correa joven, incapaz de asignar espacio para un nuevo objeto.
GC mayor: es para limpiar la vejez, y muchos GC principales son activados por GC menor
GC completo: es para limpiar todo el espacio del montón, incluida la generación más joven y la generación anterior