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 […]
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 […]
¿ 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 […]
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 […]
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 […]
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 […]
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?
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 […]
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 […]
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 […]