2012-03-24 5 views
7

Simplemente curioso. Escuché algo sobre el nuevo G1GC que aborda ese problema de latencia. No puedo/no quiero usar RTSJ.¿Hay un GC en Java que no introduce latencia (stop-the-world) quizás ejecutando el 100% al mismo tiempo?

Gracias de antemano

+0

Tal vez usted debe buscar en disco en tiempo real de nivel militar de Java por Aonix llama PERC que utiliza la tecnología de recolección de basura determinista http: // www .atego.com/products/aonix-perc/more on Java en tiempo real http://en.wikipedia.org/wiki/Real_time_Java – ecle

Respuesta

2

No creo que haya ningún recolector de basura de pausa cero. Pero en general, un colector de baja pausa como CMS hará el trabajo.

Los problemas con pausas y reducción de pausa son los siguientes:

  • Un régimen de colección cero pausa (o casi cero pausa) significativamente aumenta los gastos generales para la ejecución normal del programa. Esto es particularmente cierto con lenguajes multiproceso como Java.

  • Los esquemas que usan un subproceso o subprocesos dedicados para hacer la recolección de elementos no utilizados se pueden inundar si la aplicación genera demasiada basura.

  • Cualquier esquema de GC le dará un rendimiento deficiente si los patrones de uso de la memoria de la aplicación son demasiado "grumosos" y/o no tiene suficiente memoria física y virtual.

+1

Hay GC sin pausa ([Azul's] (http://www.azulsystems.com/products/zing/faq#pauseless) por ejemplo, que se entiende como una JVM del lado del servidor) pero definitivamente no en Oracle JVM. – ecle

+0

Lectura interesante que encontré aquí con comentarios que discuten el problema en los GC pausados ​​/ en pausa: http://blogs.forrester.com/john_r_rymer/10-06-21-why_im_worried_about_javas_future – ecle

+0

@eee - Lo rocé. Pero no entiendo de qué está hablando con su restricción de 2Gb por JVM. Las JVM HotSpot de 64 bits existen desde hace mucho tiempo ... –

6

Parece que usted está buscando la CMS GC — concurrent mark sweep.

enter image description here

(fuente: https://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf, p.12)


de diciembre de Actualización de 2015: que podría estar interesado en "pauseless" GC de Azul. Ver Explanation of Azul's "pauseless" garbage collector para más.

+0

La última vez que revisé, incluso CMS tenía latencias de detener el mundo. – JohnPristine

+0

Hm. AFAIK, todos los GC de JVM tienen esto: no estoy seguro de que sea siquiera teóricamente posible escribir un GC que no tenga _any_ stop-the-world. El CMS GC solo tiene un _shorter_ stop-the-world. –

+0

+1 buen diagrama. – Kevin

7

Puede que le interese algo como el Zing JVM.

Los sistemas Azul han puesto mucho esfuerzo en la sintonización JVM de baja latencia. Creo que también hay algunos documentos técnicos interesantes que explican cómo se hace esto.

+0

Azul se dirige a JVM de Zing como una JVM del lado del servidor. – ecle

1

Puede probar la última recolección de basura G1 en el JDK 7.

Cuestiones relacionadas