Llegamos a ustedes gracias a:



Noticias

Microsoft estudia gestión manual y segura de memoria en .Net

[04/08/2017] Microsoft Research ha estado experimentando con la integración de la gestión manual y segura de la memoria con la recolección de elementos no utilizados (GC, por sus siglas en inglés) en el runtime de .Net. El objetivo es dar a los desarrolladores la conveniencia y seguridad de la administración automatizada de la memoria, y la oportunidad para mejorar el desempeño liberando objetos de la memoria de forma manual.

La iniciativa, llamada proyecto Snowflake, es el tema de un artículo publicado esta semana por Microsoft Research y otros coautores de la Universidad de Cambridge y la Universidad de Princeton. Con Snowflake, los programadores podrían elegir entre asignar objetos en el montón GC o en el montón manual. Snowflake combina el runtime de código abierto .Net con un recurso para administrar la memoria manualmente sin comprometer el desempeño o la seguridad. Las aplicaciones se ejecutan sin modificación usando el montón GC, sin degradación del desempeño.

"Los resultados experimentales de nuestra implementación .Net CoreCLR en aplicaciones reales muestran sustanciales ganancias de desempeño especialmente en escenarios multiprocesos: Hasta ahorros de tres veces en conjuntos de trabajo picos y mejoras de hasta dos veces en el tiempo de ejecución, afirmaron los investigadores.

El modelo de Microsoft para la administración manual de la memoria se crea sobre la noción de propietarios únicos de objetos manuales, con locaciones en el stack o montón que tienen solo la referencia a un objeto asignado en el montón manual. Se introduce el concepto de escudos para hacer posible el uso compartido seguro y concurrente de objetos manuales. El escudo crea un estado en el almacenamiento local de los subprocesos para evitar la desasignación mientras el objeto está siendo utilizado.

Aunque los recolectores de elementos no utilizados como .Net GC ofrecen un alto rendimiento mediante la asignación y recolección rápida de objetos jóvenes, los estudios muestran que la GC pueden presentar sobrecarga del desempeño en comparación con la administración manual de la memoria, afirmaron los investigadores. Estas sobrecargas son amplificadas en las aplicaciones de analítica de big data y procesamiento de streams en tiempo real, debido en parte a la necesidad de hacer rastreo a través de grandes montones, explicaron.

"Es probable que esta tendencia continúe a medida que los servidores modernos hagan uso de memorias cada vez más grandes -tamaños de cientos de gigabytes, o incluso terabytes, ya son comunes, anotaron los investigadores. La administración manual de la memoria aborda el problema evitando el rastreo del gráfico del objeto para liberar a los objetos, y permite a los programadores usar su propio conocimiento de la duración de los objetos para liberar los objetos en lugares específicos en un programa. Esto mejora el rendimiento y el uso de la memoria, de acuerdo con los investigadores. Pero la administración manual de la memoria es "generalmente insegura y puede ocasionar caídas y vulnerabilidades. También cancela los beneficios en productividad de la GC.

El proyecto Snowflake modifica el runtime CoreCLR en la implementación .Net de código abierto de Microsoft, conocida como .Net Core, y amplía las bibliotecas estándares con APIs que usan memoria manual. Se aprovecha un modelo de programación para la administración manual de la memoria que permite a los objetos ser asignados y desasignados en lugares arbitrarios del programa, y ser usados de forma compartida, concurrente y segura entre varios subprocesos.

El diseño de Microsoft no pone una sobrecarga sobre la recolección de elementos no utilizados o en las operaciones como la escritura de barreras. Los programadores que quieran optimizar las aplicaciones deben cambiar de forma incremental el código para asignar objetos en el montón manual y desasignarlos explícitamente. Los objetos administrados manualmente tienen garantizada una seguridad de tipo completo y temporal, incluyendo la presencia de acceso concurrentes. Los desarrolladores tienen excepciones dinámicas administradas para situaciones de uso posterior a la gratuidad, pero no caídas o vulnerabilidades de seguridad, de acuerdo con el reporte.