estrategia de recolección de basura y la asignación de memoria de JVM

I. Visión general

  Diseñar recolector de basura, considere las siguientes tres cosas:

  (1) que necesitan ser recuperado de memoria

  (2) cuándo reciclar

  (3) cómo reciclar

  Java Runtime memoria respectiva zona parcial son: contador de programa, Java Virtual Machine pila, pilas de métodos nativos, almacenamiento dinámico de Java, el área de método en el que el contador de programa, la pila de la máquina virtual, método nativo apila tres regiones con hilos nacen, con hilos la muerte, para entrar y salir del marco de pila de la pila con el proceso, mientras que la tira se lleva a cabo sin la floculación y la pila de operaciones del estallido. Cada marco de pila cuánta memoria se asigna en la estructura de clase conocida sustancialmente por finalizado. la asignación de memoria y la recuperación de estas áreas están equipadas con certeza.

  Montón de Java y el método de área de las dos regiones tiene un importante incertidumbres: una clase que implementa varias interfaces de memoria necesaria puede ser diferente, diferentes ramas de un método realizado la memoria requerida puede no ser la misma, sólo en durante el funcionamiento, el programa puede saber exactamente lo que se crean los objetos, cómo se crean muchos objetos, esta parte de la asignación de memoria y la recuperación es dinámico, cómo se ocupa el recolector de basura es esta parte de la gestión de memoria.

En segundo lugar, determinar lo que hay que recuperar la memoria?

(1) de conteo estado del objeto de referencia de determinación (vivo o muerto)

  se determina Referencia contar objetos en vivo: la adición de un recuento de referencia en un sujeto, un lugar cada vez que se hace referencia, el valor del contador se incrementa en 1 cuando se hace referencia a la falta, el valor del contador se decrementa en uno; cualquier objeto de contador de tiempo no es 0 se puede utilizar de nuevo. recuento de referencias a pesar de que tienen algo de espacio de memoria adicional para ser contado, pero es simple en principio, determinar la eficacia alta. Pero no puede resolver el problema de las referencias circulares.

  A = B, B = A, el caso A, B de referencia entre sí, hacen que el recuento de referencia no es 0, el método de recuento de referencia de la misma no será recuperado.

Si algoritmo de análisis (2) de alcanzabilidad para determinar el objeto vivo?

  La idea básica de este algoritmo a través de una serie de objeto raíz llamado "Roots GC" como un conjunto de nodos de partida, iniciar la búsqueda hacia abajo desde estos nodos de acuerdo con la relación de referencia, el proceso de búsqueda está tomando el camino conocido como la "cadena de referencias", si una el objeto no está conectado a ninguna cadena de Roots GC de referencia, entonces el objeto ya no se hace referencia.

  GC colección raíces son:

  1) destino de pila máquina virtual hace referencia, cómo una variable local, variable temporal.

  2) el método las referencias atributo de objeto de la zona estática, como una variable de clase.

  3) El método del objeto referenciado en la región constante, tal como una piscina constante de cadena citado.

  4) dentro de las referencias de la máquina virtual, tales como la clase de objeto correspondiente a los tipos de datos básicos.

  5) Todos los objetos se llevan a cabo por el bloqueo de sincronización (sincronizados).

  Nota: Different seleccionado por el usuario recolector de basura y la corriente de recuperación del área de memoria, por lo que un área donde el objeto es totalmente posible hacer referencia por otras regiones de los objetos del montón, a continuación, estos objetos deben asociarse región también se añade a la GC raíces en.

(3) el tipo de referencia

  1) Aplicación Fuerte: Similar al objeto obj = new Object (), tales referencias relación con independencia de las circunstancias, el recolector de basura nunca se recuperan objetos referenciados perdido.

  2) Cita suave: Algunos objetos útiles, pero no es obligatorio. Los objetos son sólo referencias blandos asociados en el desbordamiento de la memoria del sistema ocurrirán antes excepciones, estos objetos se recuperarán dentro del ámbito de la columna en una segunda recuperación, si esta recuperación no tiene suficiente memoria, se lanzará la memoria excepción de desbordamiento .

  3) referencias débiles: el objeto de referencia débil sólo se puede asociar a sobrevivir hasta que se produce la siguiente recogida de basura. Cuando el recolector de basura para el trabajo, independientemente de la adecuación de la memoria actual sólo se recuperará objetos perdidos están asociados con referencias débiles.

  4) la referencia imaginaria: No se puede obtener una instancia de objeto virtual por referencia, se proporciona con el único propósito de una referencia fantasma asociado con el sistema objeto sólo para recibir una notificación cuando el objeto se recupera colector. Escuchar para recuperar objetos importantes, se puede juzgar por la frecuencia de referencia GC virtual y si es demasiado grande, el uso de memoria puede ser un problema fue el resultado de las gc sistema de llamadas frecuentes.

  

Supongo que te gusta

Origin www.cnblogs.com/hdc520/p/12540063.html
Recomendado
Clasificación