Articles of garbage collection

Thread Caching y modelo de memoria Java

Estoy tratando de entender el modelo de memoria de Java y los hilos. Como he comprendido, cada hilo tiene una copia local de la memoria “principal”. Entonces, si un hilo intenta cambiar una variable int , por ejemplo, de algún objeto, almacena en caché la variable int y, si lo cambia, es posible que el […]

Las referencias estáticas se borran: ¿Android descarga las clases en tiempo de ejecución si no se utilizan?

Tengo una pregunta específica sobre cómo funciona la colección / recolección de basura en Android. Hemos tropezado con este problema varias veces, y por lo que puedo decir, Android se comporta de forma diferente aquí en una JVM normal. El problema es el siguiente: actualmente estamos tratando de reducir las clases de singleton en la […]

Usando la ReferenceQueue de Java

¿ SoftReference y WeakReference realmente solo ayudan cuando se crean como variables de instancia? ¿Hay algún beneficio al usarlos en el scope del método? La otra gran parte es ReferenceQueue . Además de poder rastrear qué referencias son basura determinada, ¿se puede usar Reference.enqueue() para registrar forzosamente un objeto para la recolección de basura? Por […]

Recolección de basura en cadenas internas, String Pool y perm-space

Después de explorar las partes internas de las cuerdas de Java, me confundí en lo que se conoce como el “espacio permanente”. Mi comprensión al principio fue que contenía literales de String y metadatos de clase como se explica en esta pregunta . También he leído sobre el método String.intern() y coloca String s en […]

interesante OutOfMemoryException con StringBuilder

Tengo la necesidad de construir continuamente cadenas grandes en un bucle y guardarlas en una base de datos que ocasionalmente produce una OutOfMemoryException . Lo que básicamente está sucediendo aquí es que creo una cadena usando XmlWriter con StringBuilder basado en algunos datos. Luego invoco un método de una biblioteca externa que convierte esta cadena […]

Analizando registros de gc

Estoy usando las -XX:+PrintGCApplicationStoppedTime y -XX:+PrintGCApplicationConcurrentTime para activar el registro de gc. ¡Pero descubrí que solo después de 4 0 5 impresiones de PrintGCApplicationStoppedTime mis detalles reales de los registros de gc se imprimen a través del -XX:+PrintGCDetails ! Por definición, PrintGCApplicationStoppedTime imprime la PrintGCApplicationStoppedTime aplicación detenida para cada gc. Pero no tengo claro por […]

Encontrar el rango de direcciones del segmento de datos

Como ejercicio de progtwigción, estoy escribiendo un recolector de basura con marca y barrido en C. Deseo escanear el segmento de datos (globales, etc.) para los punteros a la memoria asignada, pero no sé cómo obtener el rango de las direcciones de este segmento. ¿Cómo podría hacer esto?

Colección de basura Java G1 en producción

Dado que Java 7 va a utilizar la nueva colección de basura G1 de forma predeterminada, ¿Java podrá manejar un orden de magnitud mayor sin los supuestos “devastadores” tiempos de pausa del GC? ¿Alguien realmente ha implementado G1 en producción? ¿Cuáles fueron sus experiencias? Para ser justos, la única vez que he visto pausas de […]

¿Pueden los Timers obtener basura automáticamente?

Cuando utiliza un Timer o un Thread que se ejecutará durante toda la vida útil del progtwig, ¿necesita mantener una referencia a ellos para evitar que se recoja basura? Por favor, deje de lado el hecho de que el progtwig a continuación podría tener el timer como una variable estática en la clase, esto es […]

Tamaño de objetos enormes asignados directamente a la generación anterior

Recientemente he estado leyendo acerca de las asignaciones de objetos en diferentes generaciones en Java. La mayoría de las veces, los objetos nuevos se asignan en Eden (parte de Young Generation) y luego son promovidos a Old Generation si se cumple alguno de los siguientes criterios. (1) La edad del objeto alcanzó el umbral de […]