2010-05-26 6 views
10

He estado leyendo el libro de Jones & Lins en la recolección de basura, que fue publicado en 1996.¿Resumen de la última década de recolección de basura?

Obviamente, el mundo de la informática ha cambiado drásticamente desde entonces: multinúcleo, fuera de orden chips con grandes cachés, e incluso memoria principal más grande en computadoras de escritorio. El mundo también se ha asentado más o menos en las microarquitecturas x86 y ARM para la mayoría de los sistemas orientados al consumidor.

¿Cuáles han sido los avances más significativos desde la publicación del libro seminal?

Busco en particular para los punteros a los papeles, algoritmos, disertaciones, y similares, que representan avances tanto en la práctica la teoría & de recolección de basura.

+0

* "Estoy buscando en particular para los punteros a los papeles, algoritmos, disertaciones, y similares, que representan avances tanto en la teoría y práctica de la recolección de basura." * - Pedir en StackOverflow es la manera INCORRECTA de hacer una encuesta de literatura (o "investigación" en general). Candidatos a doctorado: NO sigas este ejemplo. –

+0

Por lo que vale, no era candidato a doctorado (ni a ningún otro tipo de investigador) en el momento en que planteé la pregunta. La fecha de publicación también es relevante: hace muchos años, StackOverflow era el tipo de lugar donde un extraño podría buscar acceder a grupos de conocimiento profundos sobre temas amplios como este. Estoy de acuerdo que SO no es un sustituto de una encuesta bibliográfica, pero la encuesta "adecuada" en ese momento habría significado acceso (¡no trivial para aquellos sin afiliación universitaria!) Y lectura ~ 200 documentos. Esa es una liga de interés y compromiso completamente diferente a la que representa mi publicación. –

+0

Por lo que vale, una pregunta como esta nunca fue realmente apropiada aquí porque era y es básicamente imposible de responder adecuadamente. Mire las respuestas que realmente obtuvo.Durante los 3 años que la pregunta estuvo abierta. Eso ... por supuesto ... es la razón por la cual esta no es una forma valiosa de hacer investigación. No funciona. (Y, por lo que vale, lo que estabas haciendo era investigar, ya sea que quieras llamarlo así o algo más). –

Respuesta

1

Hasta donde yo sé, la mayoría de los avances en técnicas de recolección de basura en la última década estuvieron en el lado "práctico": se conocían algoritmos, pero se realizó un ajuste considerable con respecto a sistemas multinúcleo y patrones de uso observados. Una parte sustancial de esa investigación fue realizada por Sun e IBM, en el contexto de Java (es sorprendente que la mayoría de los análisis de patrones de uso presentados en el libro Jones & Lins trata sobre Lisp y sus listas de enlaces únicos; hoy en día los artículos hablan de Java). El algoritmo G1 de Sun se basa en ideas antiguas que están todas en el libro de Jones & Lins, pero la gente de Sun (ahora Oracle) trabajó duro para descubrir qué combinación era más eficiente. También hubo mucha investigación sobre recolección de basura distribuida: cómo gestionar los objetos de datos distribuidos por sistemas diferentes, dentro de las condiciones desafiantes usuales de la informática distribuida: la red es lenta, los nodos pueden no ser equivalentes entre sí , algunos nodos pueden fallar. La conclusión general parece ser que no funciona (hubo mucho más investigación que hallazgos). Se han implementado versiones limitadas con recuento de referencias (para referencias a objetos ubicados en otro sistema) (por ejemplo, en la RMI de Java) y parecen funcionar en contextos en los que no existe un ciclo de referencias entre nodos.

3

Los avances GC en la JVM:

G1 de la JVM parece traer algunas nuevas mejoras en la mesa (para la JVM al menos)

G1 es un “estilo de servidor” GC y tiene los siguientes atributos .

Paralelismo y simultaneidad. G1 toma ventaja del paralelismo que existe hoy en el hardware. Utiliza todas las CPU disponibles (núcleos, hilos de hardware , etc.) para acelerar sus pausas "pare el mundo" cuando se detienen subprocesos Java para habilitar GC. También funciona simultáneamente con la ejecución de subprocesos de Java para minimizar las operaciones de montón completo durante las pausas de detener el mundo.

Generational. Al igual que los otros HotSpot GC's, G1 es generacional, lo que significa que trata objetos y objetos recientemente asignados (también conocidos como jóvenes) que han vivido durante algún tiempo (también conocido) de manera diferente. Se concentra la recolección de basura la actividad en objetos pequeños, ya que son los más propensos a ser recuperable, durante su visita a viejos objetos con poca frecuencia. Para la mayoría de las aplicaciones Java , la recolección generacional de basura tiene una gran eficacia ventajas sobre esquemas alternativos.

compactación. A diferencia de CMS, G1 realiza la compactación de montón a lo largo del tiempo. La compactación elimina los posibles problemas de fragmentación para garantizar una operación suave y duradera de .

Previsibilidad. Se espera que G1 sea más predecible que CMS. Esto es en gran parte debido a la eliminación de problemas de fragmentación que pueden afectar negativamente a la pausa stop-the-world veces en CMS.Además, G1 tiene un modelo de predicción de pausa que, en muchas situaciones , le permite cumplir a menudo (o raramente superar) un objetivo de tiempo de pausa .

G1 Link

HotSpot 6 Parece tener numerosos garbage collectors puede elegir.

+0

Me gustaría señalar que hoy la JVM no es solo para Java Language, sino también para otros lenguajes de programación como Scala, Clojure, Python y Ruby. Por lo tanto, las mejoras de GC no afectan solo a Java. – bakkal

+0

Los algoritmos de recopilación de basura concurrentes, generacionales y de compactación son anteriores a Jones y Lin. –

0

Esto es algo que me encontré antes y acabo de recordar ahora:

recolección de elementos FPGA-Aware en Java

En este artículo se presenta la novela de trabajo permitiendo un componente de HW a realidad crear y mantener referencias a objetos asignados dinámicamente . Desde los componentes HW ahora pueden contener objetos, el recolector de basura de Java debe ser consciente de la existencia de estas referencias de objeto para encontrar todos los objetos que todavía están en uso.

Link to PDF Paper