/ / ¿Cuándo se usa el recolector de basura en java? - recolección de basura, java

¿Cuándo se usa el recolector de basura en Java? - recolección de basura, java

Por lo que sé, GC se usa solo cuando JVM necesita más memoria, pero no estoy seguro de ello. Entonces, por favor, alguien sugiere una respuesta a esta pregunta.

Respuestas

8 para la respuesta № 1

El algoritmo de recolección de basura de Java es como yoComprender, bastante complejo y no tan sencillo. Además, hay más que un algoritmo disponible para GC, que puede elegirse en el momento de lanzamiento de VM con un argumento que se pasa a la JVM.

Aquí hay una sección de preguntas frecuentes sobre recolección de basura: http://www.oracle.com/technetwork/java/faq-140837.html

Oracle también ha publicado un artículo "TuningRecolección de basura con la máquina virtual Java [tm] 5.0 "que contiene información detallada sobre la recolección de basura, y probablemente lo ayudará a comprender mejor el asunto: http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html


2 para la respuesta № 2

Las especificaciones de JVM y Java no dicen nada sobrecuando se produce la recolección de basura, por lo que depende totalmente de los implementadores de JVM qué políticas desean utilizar. Cada JVM probablemente debería tener alguna documentación sobre cómo maneja GC.

En general, sin embargo, la mayoría de las JVM activarán GC cuandouna asignación de memoria empuja la cantidad total de memoria asignada por encima de algún umbral. Puede haber múltiples niveles de gc (total vs parcial / generacional) que se producen en diferentes umbrales.


1 para la respuesta № 3

La recolección de basura se describe deliberadamente de forma vaga en la especificación del lenguaje Java, para dar a los implementadores de JVM las mejores condiciones de trabajo para proporcionar buenos recolectores de basura.

Por lo tanto, los recolectores de basura y su comportamiento son extremadamente dependientes del vendedor.

El más simple pero menos divertido es el que se detiene.Todo el programa a la hora de limpiar. Otros son más sofisticados y funcionan silenciosamente a lo largo de su programa limpiando a medida que avanza de manera más o menos agresiva.

La forma más divertida de investigar la recolección de basura es ejecutar jvisualvm en el Sun 6 JDK. Te permite ver muchas, muchas cosas internas que son relevantes para la recolección de basura.

https://visualvm.dev.java.net/monitor_tab.html (pero la versión más reciente tiene mucho más)


0 para la respuesta № 4

En los viejos tiempos el recolector de basura era de naturaleza empírica. En algún intervalo establecido o en función de ciertas condiciones, se activan y examinan cada uno de los objetos.

Los coleccionistas de hoy en día son más inteligentes en el sentido.que se diferencian por el hecho de que los objetos tienen una vida útil diferente. Los objetos se diferencian entre los objetos de generación joven y los objetos de generación tenencia.

La memoria se gestiona en pools de acuerdo aGeneracion. Cada vez que se llena el grupo de memoria de la generación joven, ocurre una colección menor. Los objetos supervivientes se mueven a la agrupación de memoria de generación permanente. Cuando la agrupación de memoria de la generación actual se llena, ocurre una gran colección. Se mantiene una tercera generación que se conoce como generación permanente y puede contener objetos que definen clases y métodos.