http://managedruntime.org/ es bastante escaso en lo que son exactamente en los tarballs y por qué los usuarios los querrían. http://lwn.net/Articles/392307/ tiene más detalles, pero el autor tampoco está seguro de qué hacen realmente los módulos de gestión de memoria. Aparentemente, el objetivo de alto nivel es reducir las pausas de GC, pero me interesaría (apunta a) un resumen de lo que hace el módulo, y por qué/cómo eso mejora las cosas. Especialmente impresionante sería un indicador de algo sobre cuánto impacto tienen estos parches (una evaluación).¿Qué hay en realidad en los parches del kernel de la Initiative administrada y la JVM?
Respuesta
Azul's Pauseless GC se basa en el sistema de gestión de memoria del SO subyacente. en hardware Azul, esto fue llevado a cabo por el kernel personalizado de Azul (Aztec). En Linux, el sistema de administración de memoria debe ser capaz de admitir una cantidad suficiente de operaciones de administración de memoria por segundo para mantenerse al día con la cantidad de basura creada por segundo. Cuando la gente de Azul portó Azul JVM a Linux, determinaron que sus API de administración de memoria eran relativamente lentas en comparación con las de Aztec, aunque solo fuera porque las MM API de Linux nunca tenían la intención de soportar algo como PGC. los parches de MRT mejoran la cantidad de operaciones por segundo que el kernel de Linux puede manejar y, por lo tanto, son compatibles con PGC.
Una analogía sería la adición de poll/select a Berkeley Sockets, y más tarde, en 2001, cuando epoll se agregó al kernel de Linux (http://www.xmailserver.org/linux-patches/nio-improve.html).
[exención de responsabilidad: a pesar de que yo soy un ejecutivo de tecnología y asesor técnico actual o anterior a Azul, no hablo por ellos]
- 1. ¿Qué hace JVM marcar CMSClassUnloadingEnabled en realidad?
- 2. ¿Existe Java Kernel en realidad?
- 3. ¿Hay alguna manera de "reiniciar" la JVM?
- 4. ¿Qué ensambladores de JVM hay?
- 5. ¿Qué hace ImageSwitcher en realidad?
- 6. ¿Qué significa "dinámico" en realidad?
- 7. En Delphi, ¿qué hacen realmente System.TMonitor.Pulse y TMonitor.PulseAll en realidad
- 8. ¿Qué hace la configuración INSTALLED_APPS en Django en realidad?
- 9. ¿qué hace -arrayWithArray en realidad?
- 10. ¿Qué hace #include en realidad? En
- 11. ¿Qué significa en realidad "Self Time" del perfilador de Netbeans?
- 12. ¿Qué significa en realidad "Registrarse para la interoperabilidad COM"?
- 13. ¿Qué hace CascadeType.REFRESH en realidad?
- 14. ¿La seguridad del mensaje WCF en realidad encripta los contenidos del mensaje?
- 15. ¿Qué son los bytecodes y cómo los maneja JVM?
- 16. ¿Podemos ver objetos en la memoria JVM?
- 17. ¿Qué hacer cuando hay demasiados cambios en un solo parche en un hg mq la cola de parches?
- 18. Corriendo/Interpretando C en la parte superior de la JVM?
- 19. ¿Qué significa en realidad LRU de Memcached?
- 20. ¿Cuál es la diferencia entre los modos de usuario y kernel en los sistemas operativos?
- 21. ¿Cómo supervisan los procesos los procesos del supervisor? ¿Se puede hacer lo mismo en la JVM?
- 22. Clases de parches en Python
- 23. ¿Cómo funcionan los parches en Git?
- 24. ¿Hay una implementación de peor caso de la JVM?
- 25. ¿Para qué se utilizan parches en SVN?
- 26. ¿Qué función funciona en realidad python print()?
- 27. ¿Qué hace Array.Clear en realidad bajo las sábanas?
- 28. ¿Qué significa "outer =>" en realidad?
- 29. ¿Qué hace requestValidationMode = "2.0" en realidad?
- 30. ¿Cuál es la diferencia entre la pila del kernel y la pila del usuario?
hubiera gustado más (LWN-estilo) la profundidad técnica, pero gracias por la respuesta de todos modos. – Yang