ES2615855T3 - Recolección de elementos no utilizados conservativa y números enteros etiquetados para la gestión de memoria - Google Patents

Recolección de elementos no utilizados conservativa y números enteros etiquetados para la gestión de memoria Download PDF

Info

Publication number
ES2615855T3
ES2615855T3 ES12776762.2T ES12776762T ES2615855T3 ES 2615855 T3 ES2615855 T3 ES 2615855T3 ES 12776762 T ES12776762 T ES 12776762T ES 2615855 T3 ES2615855 T3 ES 2615855T3
Authority
ES
Spain
Prior art keywords
memory
objects
component
representations
call stack
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12776762.2T
Other languages
English (en)
Inventor
Steven Lucco
Curtis Cheng-Cheng MAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2615855T3 publication Critical patent/ES2615855T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

Un procedimiento, que comprende: la identificación (600) de objetos-raíz incluidos en una pila de llamadas, en el que los objetos-raíz comprenden representaciones de números enteros y representaciones de punteros; el etiquetado (610) de las representaciones de números enteros, en el que una representación de números enteros etiquetada se puede distinguir de una representación de puntero no etiquetada; el seguimiento (620) de los objetos-raíz en un conjunto de ubicaciones de memoria correspondientes, en el que se realiza un seguimiento posterior en la representación de puntero no etiquetada, y en el que el seguimiento posterior es omitido en la representación de números enteros etiquetada; y la liberación (630) de memoria asignada a un conjunto de objetos inaccesibles por la pila de llamadas.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Recoleccion de elementos no utilizados conservativa y numeros enteros etiquetados para la gestion de memoria Antecedentes
A modo de antecedentes relativos a algunos sistemas convencionales, se observa que los dispositivos informaticos han almacenado tradicionalmente informacion y han asociado aplicaciones. Para estos fines, es deseable la implementacion de un esquema de gestion de memoria eficiente para lograr un rendimiento informatico aumentado. Los avances en esquemas de gestion de memoria automaticos han sido particularmente deseables sobre esquemas de gestion de memoria manuales. Los algoritmos recolectores de elementos no utilizados, por ejemplo, son esquemas de gestion de memoria automaticos que intentan recuperar la memoria ocupada por objetos que ya no estan en uso por un programa en particular.
El recolector de elementos no utilizados de seguimiento es el tipo mas comun de recolector de elementos no utilizados. El recolector de elementos no utilizados de seguimiento determina primero que objetos son accesibles (o potencialmente alcanzables) y luego descarta todos los objetos restantes. Un objeto accesible puede definirse como un objeto para el que existe alguna variable en el entorno de programa que condujo a la variable, ya sea directamente o a traves de la referencia de otros objetos accesibles. Mas precisamente, los objetos son generalmente accesibles de dos maneras. En primer lugar, se supone que un conjunto de objetos diferenciado, conocido como rafces, es accesible. Normalmente, estas incluyen los objetos mencionados desde cualquier punto de la pila de llamadas (es decir, invocandose actualmente todas las variables y parametros locales en funciones) y cualquier variable global. En segundo lugar, todo lo mencionado desde un objeto accesible se considera como accesible.
Una complicacion con los recolectores de elementos no utilizados convencionales, en lenguajes con tipos de referencia y tipos de valores desencajados, es que el recolector de elementos no utilizados distingue entre que variables de una pila de llamadas son valores regulares (por ejemplo, numeros enteros) y que variables son referencias (por ejemplo, punteros). Tal distincion sena util en tales sistemas para propositos de distincion, ya que en caso contrario un numero entero y una referencia podnan ser parecidos segun se representa en la memoria. A este respecto, el recolector de elementos no utilizados sena capaz de usar la distincion para decidir si tratar un elemento en particular como una referencia y seguir la referencia, o ser simplemente un valor primitivo.
Las deficiencias descritas anteriormente de los esquemas de gestion de memoria de hoy en dfa solo pretenden proporcionar una vision de conjunto de algunos de los problemas de los sistemas convencionales y no pretenden ser exhaustivas. Otros problemas con el estado de la tecnica y los beneficios correspondientes de algunas de las diversas realizaciones no limitativas pueden hacerse mas evidentes tras la revision de la siguiente descripcion detallada.
Marlow et al: “Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages”, ICFP'04: Procedimientos de la conferencia internacional de ACM SIGPLAN sobre la programacion de funciones, 19 de septiembre de 2004 (19-9-2004), pp. 4-15, Nueva York, EE. UU., se refiere a hacer un curry: push/enter en comparacion con eval/apply para lenguajes de orden superior. Este documento aborda lenguajes de orden superior que fomentan el curry que se implementan usando uno de dos modelos basicos de evaluacion: push/enter o eval/apply. Los implementadores usan su intuicion y juicios cualitativos para elegir un modelo u otro. El objetivo de este artfculo es el de proporcionar, por primera vez, una base mas sustancial para esta eleccion, basada en nuestra experiencia cualitativa y cuantitativa de implementar ambos modelos en un compilador de ultima generacion para Haskell.
Boehm, H-J. et al: “Garbage Collection in an Uncooperative Environment”, Software Practice and Experience, Wiley & Sons, Bognor Regis, Gran Bretana, volumen 18 n.° (9), 1 de septiembre de 1988 (1-9-1988), pp. 807-820, ISSN: 0038-0644, DOI: 10.1002/SPE.4380180902 se refiere a la recoleccion de elementos no utilizados en un entorno no cooperativo. Este documento describe una tecnica para la asignacion de almacenamiento y recoleccion de elementos no utilizados en ausencia de cooperacion importante del codigo usando el asignador. Esto limita la recoleccion de elementos no utilizados al tiempo realmente requerido para la recoleccion de elementos no utilizados. En particular, los programas de aplicacion que rara vez o nunca hacen uso del recolector ya no se enfrentan a una penalizacion de rendimiento sustancial. Este enfoque simplifica en gran medida la implementacion de lenguajes que soportan la recoleccion de elementos no utilizados. Asimismo, permite que los compiladores convencionales se usen con un recolector de elementos no utilizados, ya sea como medio principal de restauracion de almacenamiento o como herramienta de ayuda para pruebas.
El documento US2007150868 se refiere a un codigo de borrado de pila de insercion para la recoleccion de elementos no utilizados conservativa. Este documento desvela una ubicacion para insertar un codigo de borrado de pila en un procedimiento determinado que se debe ejecutar en un entorno de ejecucion de un sistema informatico. El codigo de borrado de pila se inserta en la ubicacion del procedimiento. El codigo de borrado de pila se ejecuta durante la ejecucion del procedimiento para borrar una pila. Asimismo, se describen y reivindican otras realizaciones.
El documento US2008098296 se refiere a la representacion del contenido de lenguaje de marcado de hipertexto.
5
10
15
20
25
30
35
40
45
50
55
Este documento desvela generalmente un aspecto de la materia objeto descrita en esta memoria descriptiva que se puede incorporar en un procedimiento que incluye la representacion del contenido de lenguaje de marcado de hipertexto (HTML), en un motor de representacion HTML, a las primitivas de un motor de representacion de graficos vectoriales; la representacion de las primitivas, en el motor de representacion de graficos vectoriales, para proporcionar una interfaz de usuario; la recepcion de un evento de entrada a traves de la interfaz de usuario; la determinacion, en el motor de representacion HTML, de un cambio en el aspecto de la interfaz de usuario basado en el evento de entrada; y la actualizacion de al menos una de las primitivas para la representacion por parte del motor de representacion de graficos vectoriales de acuerdo con el cambio de aspecto para actualizar la interfaz de usuario.
Por lo tanto, el objeto de la invencion es proporcionar un procedimiento mejorado y un dispositivo de gestion de memoria para la gestion de memoria.
Este objeto es resuelto por la materia objeto de las reivindicaciones independientes.
Las realizaciones preferentes se definen en las reivindicaciones dependientes.
En el presente documento se proporciona un sumario simplificado para ayudar a permitir una comprension basica o general de diversos aspectos de realizaciones ejemplares y no limitativas que aparecen en la descripcion mas detallada y en los dibujos adjuntos. Sin embargo, este sumario no pretende ser una vision de conjunto extensa o exhaustiva. En cambio, el unico proposito de este sumario es el de presentar algunos conceptos relacionados con algunas realizaciones no limitativas y ejemplares de una forma simplificada como un preambulo a la descripcion mas detallada de las 10 diversas realizaciones siguientes.
De acuerdo con una o mas realizaciones y la divulgacion correspondiente, se describen diversos aspectos no limitativos en relacion con la recoleccion de elementos no utilizados conservativa para la gestion de memoria. En uno de tales aspectos, se proporciona un procedimiento para el etiquetado de numeros enteros en el interior de un algoritmo de recoleccion de elementos no utilizados conservativo. El procedimiento puede incluir la identificacion de objetos-rafz incluidos en una pila de llamadas, que pueden comprender representaciones de numeros enteros y representaciones de punteros. La realizacion puede incluir ademas el etiquetado de las representaciones de numeros enteros de manera que una representacion de numeros enteros etiquetada se pueda distinguir de una representacion de puntero no etiquetada. El procedimiento tambien puede incluir el seguimiento de los objetos-rafz a un conjunto de ubicaciones de memoria correspondiente. Para esta realizacion particular, se realiza un seguimiento posterior en la representacion de puntero no etiquetada, mientras que el seguimiento posterior se omite en la representacion de numero entero etiquetada. El procedimiento puede ademas incluir la liberacion de memoria asignada a un conjunto de objetos inaccesibles por la pila de llamadas.
En otro aspecto, se desvela un dispositivo de gestion de memoria configurado para implementar un algoritmo de recoleccion de elementos no utilizados conservativo con numeros enteros etiquetados. De acuerdo a dicha realizacion, el dispositivo de gestion de memoria incluye un procesador configurado para ejecutar componentes ejecutables por ordenador almacenados en memoria. Los componentes ejecutables por ordenador incluyen un componente de barrido, un componente de etiquetado, un componente de seguimiento y un componente de reciclaje. El componente de barrido esta configurado para identificar objetos-rafz incluidos en una pila de llamadas, que puede comprender representaciones de numeros enteros y representaciones de punteros. El componente de etiquetado se configura entonces para el etiquetado de las representaciones de numeros enteros de manera que las representaciones de numeros enteros etiquetadas se distinguen de las representaciones de punteros no etiquetadas, mientras que el componente de seguimiento esta configurado para localizar los objetos-rafz en un conjunto de ubicaciones de memoria correspondiente. Para esta realizacion, el componente de seguimiento esta configurado para realizar un seguimiento posterior en las representaciones de punteros no etiquetadas, en la que el seguimiento posterior se omite en las representaciones de numeros enteros etiquetadas. El componente de reciclaje se configura entonces para liberar memoria asignada a un conjunto de objetos inaccesibles por la pila de llamadas.
En otro aspecto, se desvela un medio de almacenamiento legible por ordenador para el etiquetado de numeros enteros en el interior de un algoritmo de recoleccion de elementos no utilizados conservativo. Segun dicha realizacion, el medio de almacenamiento legible por ordenador incluye instrucciones legibles por ordenador para hacer que al menos un procesador realice diversos actos. Por ejemplo, tales actos incluyen el etiquetado de un grafico de objeto asociado con una pila de llamadas y la generacion de un segmento de memoria de objetos durante una ejecucion de la pila de llamadas. En este caso, los objetos-rafz incluidos en un grafico de objeto etiquetado comprenden representaciones de numeros enteros etiquetadas y representaciones de punteros no etiquetadas, mientras que el segmento de memoria de objetos comprende objetos incluidos en una parte ejecutada de la pila de llamadas. Esta realizacion incluye ademas el seguimiento de objetos no ejecutados incluidos en una parte no ejecutada de la pila de llamadas a ubicaciones de memoria correspondientes en el segmento de memoria. Para esta realizacion particular, se realiza un seguimiento posterior en las representaciones de punteros no etiquetadas y se omite en las representaciones de numeros enteros etiquetadas. A continuacion, se borran las ubicaciones de memoria correspondientes a objetos inaccesibles en el segmento de memoria, en las que los objetos inaccesibles son inaccesibles por la parte no ejecutada de la pila de llamadas.
Otras realizaciones y diversos ejemplos no limitativos, escenarios e implementaciones se describen con mas detalle
5
10
15
20
25
30
35
40
45
50
55
a continuacion.
Breve descripcion de los dibujos
A continuacion, se describen diversas realizaciones no limitativas con referencia a los dibujos adjuntos, en los que:
la figura 1 ilustra un sistema ejemplar que facilita la implementacion de un algoritmo de recoleccion de elementos no utilizados conservativo segun una realizacion;
la figura 2 es un diagrama que ilustra un segmento de memoria de objetos segun una realizacion;
la figura 3 es un diagrama que ilustra un grafico de objeto ejemplar segun una realizacion;
la figura 4 es un diagrama que ilustra una liberacion de memoria ejemplar segun una realizacion;
la figura 5 es un diagrama de bloques que ilustra un dispositivo de gestion de memoria ejemplar segun una
realizacion;
la figura 6 es un diagrama de flujo que ilustra una realizacion no limitativa ejemplar para implementar un algoritmo de recoleccion de elementos no utilizados conservativo segun una realizacion;
la figura 7 es un diagrama de bloques que ilustra una unidad de gestion de recursos ejemplar segun una realizacion;
la figura 8 es un diagrama de flujo que ilustra una realizacion no limitativa ejemplar para el etiquetado de numeros enteros segun una realizacion;
la figura 9 es un diagrama de bloques que representa entornos de red no limitativos ejemplares en los que se pueden implementar diversas realizaciones descritas en el presente documento; y
la figura 10 es un diagrama de bloques que representa un sistema informatico no limitativo o un entorno operativo en el que se pueden implementar uno o mas aspectos de diversas realizaciones descritas en el presente documento.
Descripcion detallada
Vision de conjunto
Como se ha indicado en los antecedentes, es deseable implementar un algoritmo de recoleccion de elementos no utilizados que distingue entre numeros enteros y punteros en una pila de llamadas. En diversas realizaciones, la gestion de memoria se redisena alrededor de la compatibilidad de codigo original. En un aspecto, los objetos de secuencia de comandos son objetos que se gestionan menos y mas se gestionan solo piezas originales de memoria, de manera que se elimina el recuento de referencias entre objetos. Ademas, se implementa un algoritmo de recoleccion de elementos no utilizados conservativo, en el que no se supone que todo lo que es un puntero es conocido. Con un recolector de elementos no utilizados de entorno en tiempo de ejecucion de lenguaje comun (CLR) por ejemplo, la pila esta asignada rigurosamente. Sin embargo, con codigo original, por ejemplo, codigo C y codigo de secuencia de comandos, no se sabe que hay en la pila. A este respecto, en lugar de usar un modelo de recuento de referencias, se contempla que los objetos interactuen directamente.
Las diversas realizaciones desveladas en el presente documento estan dirigidas al etiquetado de numeros enteros en el interior de un algoritmo de recoleccion de elementos no utilizados conservativo. Con este fin, se observa que los aspectos desvelados en este presente documento facilitan una ejecucion de secuencias de comandos (por ejemplo, el programa JavaScript) contra un modelo de objetos de documento que es poco probable que genere punteros falsos. Ademas, los aspectos desvelados en el presente documento reducen la probabilidad de punteros falsos, puesto que los punteros no etiquetados y los numeros enteros etiquetados son facilmente distinguibles.
NUMEROS ENTEROS ETIQUETADOS Y RECOLECCION DE ELEMENTOS NO UTILIZADOS CONSERVATIVA
Han surgido varias cuestiones a medida que la experiencia de navegacion web evoluciona desde una presentacion plana de informacion con una interactividad minima hasta una aplicacion mas enriquecida o una experiencia de miniaplicacion con mucha interactividad en el lado del cliente. Mas generalmente, la experiencia de navegacion web se ha convertido en un tubrido de visualizacion de informacion y una interactividad mas enriquecida con objetos en pantalla. Los desaffos particulares con esta evolucion se basan en la adaptacion del antiguo modelo de objetos de documento (DOM), originalmente disenado principalmente para la presentacion plana de informacion basada en codigo original de un cliente, a una experiencia que maneja fluidamente el codigo de secuencia de comandos, tal como objetos JavaScript.
La mejora de la velocidad es particularmente importante para facilitar una experiencia de usuario mas deseable. Por ejemplo, con menus desplegables del pasado, la experiencia web parpadeo con retrasos basados en las comunicaciones con el servidor. Sin embargo, las secuencias de comandos permiten a los programas pequenos modificar el DOM al instante sin volver al servidor. Puesto que la gente quiere hacer mas cosas al instante sin volver al servidor, hacer que el codigo de secuencia de comandos se ejecute rapidamente se ha convertido en un desaffo.
Puesto que la experiencia del usuario esta ampliamente influenciada por la eficacia de la secuencia de comando del DOM, es deseable cambiar el DOM tan rapido como sea posible para maximizar la respuesta interactiva. La comunicacion entre los motores de secuencias de comandos y las clases originales del DOM era pobre en el pasado debido al uso de la automatizacion de vinculacion e incrustacion de objetos (OLE) que incluye un conjunto de
5
10
15
20
25
30
35
40
45
50
55
60
interfaces, por ejemplo, iDispatch, iActiveScript, etc. que hacen que cualquier objeto sea programable. Sin embargo, tales procedimientos son lentos, y por lo tanto se desean mejoras. Por consiguiente, los aspectos desvelados en el presente documento estan dirigidos a mejorar la velocidad de ejecucion de la secuencia de comando mediante el etiquetado de numeros enteros en el interior de un algoritmo de recoleccion de elementos no utilizados conservativo.
La figura 1 ilustra un sistema ejemplar que facilita la implementacion de un algoritmo de recoleccion de elementos no utilizados conservativo segun una realizacion. Como se ilustra, el sistema 100 puede incluir una unidad 110 de gestion de memoria, que esta acoplada mediante la comunicacion a la memoria 120. En un aspecto, la unidad 110 de gestion de memoria esta configurada para implementar un algoritmo de recoleccion de elementos no utilizados conservativo para gestionar los elementos no utilizados en la memoria 120. Ademas, la unidad 110 de gestion de memoria esta configurada para generar un grafico 114 de objeto etiquetado asociado con una ejecucion de la secuencia 112 de comandos. Por ejemplo, la secuencia 112 de comandos puede ser un programa JavaScript ejecutado contra un DOM, en el que el programa JavaScript incluye varios objetos que requieren una asignacion de elementos no utilizados en la memoria 120. En una realizacion particular, para facilitar la distincion entre numeros enteros y punteros en el interior de la memoria 120, los objetos de secuencia de comandos correspondientes a valores de numeros enteros son etiquetados por la unidad 110 de gestion de memoria y se incluyen en el grafico 114 de objetos etiquetados.
En un aspecto, la memoria asignada a objetos de secuencia de comandos comprende el almacenamiento de dichos objetos en un segmento de memoria. A continuacion, haciendo referencia a la figura 2, se proporciona un diagrama de bloques de un segmento de memoria de objetos ejemplar segun una realizacion. Como se muestra, el segmento 200 de memoria puede incluir una memoria 210 disponible, junto con la memoria asignada correspondiente a varios objetos 220, 230, 240, 250, 260 y 270. Para este ejemplo particular, los objetos 240 y 270 corresponden a valores de puntero, mientras que los objetos 220, 230, 250 y 260 corresponden a valores de numeros enteros. Concretamente, el objeto 240 es un valor de puntero que hace referencia al valor de numero entero representado por el objeto 230, mientras que el objeto 270 es un valor de puntero que hace referencia al valor de numero entero representado por el objeto 260.
A este respecto, los objetos de secuencia de comandos correspondientes a valores de numeros enteros pueden etiquetarse de manera que se puedan distinguir facilmente de los valores de puntero. A continuacion, haciendo referencia a la figura 3, se proporciona un diagrama que ilustra un grafico de objeto ejemplar que facilita un mapeo de objetos etiquetados/no etiquetados en el segmento de memoria. Como se ilustra, el grafico 300 de objeto mapea objetos incluidos en una parte 310 de pila de llamadas no ejecutada al segmento 320 de memoria. Para estos fines y otros relacionados, se observa que el segmento 320 de memoria y la memoria 330 disponible son generalmente analogos a la memoria 210 disponible del segmento 200 de memoria, respectivamente.
En un aspecto, el grafico 300 de objeto se utiliza para determinar que objetos del segmento 320 de memoria son accesibles por la parte 310 de pila de llamadas no ejecutada. Concretamente, los objetos-rafz incluidos en la parte 310 de pila de llamadas no ejecutada estan localizados a las ubicaciones de memoria correspondientes en el segmento 320 de memoria, en el que se etiquetan los objetos-rafz correspondientes a valores de numeros enteros. Se contempla entonces que un seguimiento posterior de objetos-rafz se realice solamente en valores de puntero no etiquetados accesibles para identificar objetos accesibles mencionados por esos valores de puntero. Por el contrario, se omite un seguimiento posterior en valores de numeros enteros etiquetados accesibles. Para este ejemplo particular, puesto que el objeto 390 accesible es un objeto-rafz que corresponde a un valor de puntero, no esta etiquetado. Por lo tanto, se realiza un seguimiento posterior en el objeto 390 accesible, que identifica el objeto 380 accesible que corresponde a un valor de numero entero. Sin embargo, se omite un seguimiento posterior en los objetos 340 y 370 accesibles, ya que estos son objetos-rafz correspondientes a valores de numeros enteros etiquetados.
Se observa que el grafico 300 de objeto se puede usar para identificar objetos inaccesibles por la parte 310 de pila de llamadas no ejecutada. En este ejemplo particular, los objetos 350 y 360 inaccesibles se consideran inaccesibles, ya que no corresponden a objetos-rafz en la parte 310 de pila de llamadas no ejecutada, ni tampoco son mencionados por un objeto de puntero accesible.
Al identificar objetos inaccesibles, la memoria asignada a tales objetos puede ser borrada. A continuacion, haciendo referencia a la figura 4, se proporciona un diagrama que ilustra una liberacion de memoria ejemplar segun una realizacion. Como se ilustra, el grafico 400 de objeto incluye el segmento 420 de memoria, que es generalmente analogo al segmento 200 y 320 de memoria, en el que el segmento 420 de memoria representa una liberacion de memoria previamente asignada a objetos 350 y 360 inaccesibles. Concretamente, el segmento 420 de memoria incluye ahora memoria 450 y 460 liberada, ademas de la memoria 430 disponible. Sin embargo, en un aspecto, los objetos 440, 470, 480 y 490 accesibles se conservan en sus lugares de almacenamiento originales (es decir, el segmento 420 de memoria no se colapsa).
A continuacion, haciendo referencia a la figura 5, un diagrama de bloques ilustra una unidad de gestion de memoria ejemplar configurada para implementar un algoritmo de recoleccion de elementos no utilizados conservativo segun diversos aspectos. Como se ilustra, la unidad 500 de gestion de memoria puede incluir un componente 510 de procesador, un componente de 520 memoria, un componente 530 de barrido, un componente 540 de etiquetado, un
5
10
15
20
25
30
35
40
45
50
55
componente 550 de seguimiento y un componente 560 de reciclaje.
En un aspecto, el componente 510 de procesador esta configurado para ejecutar instrucciones legibles por ordenador relacionadas con la realizacion de cualquiera de una pluralidad de funciones. El componente 510 de procesador puede ser un unico procesador o una pluralidad de procesadores dedicados a analizar la informacion a comunicar desde la unidad 500 de gestion de memoria y/o generar informacion que pueden usar el componente 520 de memoria, el componente 530 de barrido, el componente 540 de etiquetado, el componente 550 de seguimiento y/o el componente 560 de reciclaje. Adicionalmente o como alternativa, el componente 510 de procesador puede configurarse para controlar uno o mas componentes de la unidad 500 de gestion de memoria.
En otro aspecto, el componente 520 de memoria esta acoplado al componente 510 de procesador y configurado para almacenar instrucciones legibles por ordenador ejecutadas por el componente 510 de procesador. El componente 520 de memoria tambien puede configurarse para almacenar cualquiera de una pluralidad de otros tipos de datos que incluyen datos generados por cualquiera del componente 530 de barrido, el componente 540 de etiquetado, el componente 550 de seguimiento y/o el componente 560 de reciclaje. El componente 520 de memoria puede configurarse en varias configuraciones diferentes, incluyendo como memoria de acceso aleatorio, memoria respaldada por batena, disco duro, cinta magnetica, etc. Tambien pueden implementarse diversas caractensticas sobre el componente 520 de memoria, tales como la compresion y copia de seguridad automatica, por ejemplo, el uso de una configuracion de matriz redundante de discos independientes.
Como se ilustra, la unidad 500 de gestion de memoria tambien puede incluir un componente 530 de barrido. De acuerdo a dicha realizacion, el componente 530 de barrido esta configurado para identificar objetos-rafz incluidos en una pila de llamadas, que comprenden representaciones de numeros enteros y representaciones de punteros. En este caso, se contempla que dicha pila de llamadas este asociada con una secuencia de comandos ejecutada contra un modelo de objeto particular. Por ejemplo, la pila de llamadas puede asociarse con una compilacion de un programa JavaScript, lo que facilita la modificacion de un modelo de objetos de documento durante el tiempo de ejecucion.
Como se ilustra, la unidad 500 de gestion de memoria puede incluir ademas un componente 540 de etiquetado que esta configurado para etiquetar las representaciones de numeros enteros incluidos en la pila de llamadas. En este caso, se observa que el etiquetado de numeros enteros se realiza de tal manera que las representaciones de numeros enteros etiquetados se distinguen facilmente de las representaciones de punteros no etiquetados. Con este fin, se observa ademas que el componente 540 de etiquetado se puede configurar para etiquetar numeros enteros en cualquiera de una pluralidad de maneras. Por ejemplo, el componente 540 de etiquetado se puede configurar para transformar las representaciones de numeros enteros en una estructura de datos diferente. En una realizacion particular, dicha transformacion puede incluir tener un componente 540 de etiquetado configurado para dedicar a una etiqueta al menos un bit en la estructura de datos diferente.
En un aspecto, el dispositivo 500 de gestion de memoria incluye ademas el componente 550 de seguimiento. De acuerdo a tal realizacion, el componente 550 de seguimiento esta configurado para localizar los objetos-rafz identificados por el componente 530 de barrido en un conjunto de ubicaciones de memoria correspondientes. Despues de un seguimiento inicial de los objetos-rafz, se contempla que se realice un seguimiento posterior de objetos relacionados. Sin embargo, en una realizacion particular, el seguimiento posterior solo se realiza en las representaciones de punteros no etiquetadas y se omite en las representaciones de numeros enteros etiquetadas.
En otro aspecto, el dispositivo 500 de gestion de memoria tambien incluye el componente 560 de reciclaje, que esta configurado para liberar memoria asignada a un conjunto de objetos inaccesibles por la pila de llamadas. En una realizacion particular, el componente 560 de reciclaje puede configurarse para colocar objetos llamados por la pila de llamadas sobre un segmento de memoria. De acuerdo a tal realizacion, el componente 560 de reciclaje puede entonces configurarse ademas para iniciar un algoritmo de recoleccion de elementos no utilizados basado en el hecho de que un tamano del segmento de memoria excede un umbral. En otra realizacion, el componente 560 de reciclaje puede configurarse para conservar respectivamente objetos accesibles en ubicaciones de almacenamiento originales de un segmento de memoria. Por ejemplo, el componente 560 de reciclaje puede configurarse para mantener una separacion de objetos de segmentos de memoria segun un conjunto fijo de lfmites en el interior del segmento de memoria.
La figura 6 es un diagrama de flujo que ilustra una realizacion no limitativa ejemplar para implementar un algoritmo de recoleccion de elementos no utilizados conservativo segun una realizacion. En 600, se identifican los objetos-rafz incluidos en una pila de llamadas, que comprenden representaciones de numeros enteros y representaciones de punteros. A continuacion, en 610, las representaciones de numeros enteros se etiquetan de manera que las representaciones de numeros enteros etiquetadas se distinguen de las representaciones de punteros no etiquetadas. Los objetos-rafz se localizan entonces en un conjunto de ubicaciones de memoria correspondiente en 620 de manera que se realiza un seguimiento posterior en las representaciones de punteros y se omite en las representaciones de numeros enteros. La memoria asignada a objetos inaccesibles por la pila de llamadas se libera despues en 630.
A continuacion, haciendo referencia a la figura 7, un diagrama de bloques ilustra una unidad de gestion de recursos
5
10
15
20
25
30
35
40
45
50
55
60
ejemplar configurada para etiquetar numeros enteros segun diversos aspectos. Como se ilustra, la unidad 700 de gestion de recursos puede incluir un componente 710 de procesador, un componente 720 de memoria, un componente 730 de etiquetado, un componente 740 de segmento de memoria, un componente 750 de seguimiento, un componente 760 de liberacion, un componente 770 de supervision y un componente 780 grafico.
Igual que el componente 510 de procesador en la unidad 500 de gestion de memoria, el componente 710 de procesador esta configurado para ejecutar instrucciones legibles por ordenador relacionadas con la realizacion de cualquiera de una pluralidad de funciones. El componente 710 de procesador puede ser un unico procesador o una pluralidad de procesadores dedicados a analizar la informacion que ha de comunicarse desde la unidad 700 de gestion de recursos y/o generar informacion que se puede usar por el componente 720 de memoria, el componente 730 de etiquetado, el componente 740 de segmento de memoria, el componente 750 de seguimiento, el componente 760 de liberacion, el componente 770 de supervision y/o el componente 780 grafico. Adicionalmente o como alternativa, el componente 710 de procesador puede configurarse para controlar uno o mas componentes de la unidad 700 de gestion de recursos.
En otro aspecto, el componente 720 de memoria esta acoplado al componente 710 de procesador y configurado para almacenar instrucciones legibles por ordenador ejecutadas por el componente 710 de procesador. El componente 720 de memoria tambien puede configurarse para almacenar cualquiera de una pluralidad de otros tipos de datos que incluyen datos generados por cualquiera del componente 730 de etiquetado, el componente 740 de segmento de memoria, el componente 750 de seguimiento, el componente 760 de liberacion, el componente 770 de supervision y/o el componente 780 grafico. En este caso, se observa que el componente 720 de memoria es analogo al componente 520 de memoria en la unidad 500 de gestion de memoria. Por consiguiente, se puede apreciar que cualquiera de las caractensticas/configuraciones del componente 520 de memoria mencionadas anteriormente tambien son aplicables al componente 720 de memoria.
Como se ilustra, la unidad 700 de gestion de recursos tambien puede incluir el componente 730 de etiquetado. De acuerdo a dicha realizacion, el componente 730 de etiquetado esta configurado para etiquetar un grafico de objeto asociado con una pila de llamadas. En este caso, se debe observar que los objetos-rafz incluidos en un grafico de objeto etiquetado pueden comprender representaciones de numeros enteros etiquetadas y representaciones de punteros no etiquetadas. Para algunas realizaciones, se debe observar ademas que la unidad 700 de gestion de recursos puede incluir tambien un componente 780 grafico, que esta configurado para realizar graficos de objetos etiquetados por el componente 730 de etiquetado.
En un aspecto, la unidad 700 de gestion de recursos esta configurada para gestionar objetos incluidos en un segmento de memoria. Para facilitar dicha gestion, la unidad 700 de gestion de recursos puede incluir el componente 740 de segmento de memoria, que esta configurado para generar un segmento de memoria de objetos durante una ejecucion de la pila de llamadas. Para esta realizacion particular, se contempla que este segmento de memoria de objetos pueda comprender objetos incluidos en una parte ejecutada de la pila de llamadas.
En otro aspecto, la unidad 700 de gestion de recursos puede incluir ademas el componente 750 de seguimiento. De acuerdo a dicha realizacion, el componente 750 de seguimiento esta configurado para localizar objetos no ejecutados incluidos en una parte no ejecutada de la pila de llamadas en las ubicaciones de memoria correspondientes en el segmento de memoria. En este caso, al igual que el componente 550 de seguimiento en el dispositivo 500 de gestion de memoria, se contempla que el componente 750 de seguimiento pueda configurarse para realizar un seguimiento posterior de objetos relacionados despues de un seguimiento inicial de los objetos-rafz de la pila de llamadas. Ademas, se contempla que dicho seguimiento posterior solo se realice en las representaciones de punteros no etiquetadas y se omita en las representaciones de numeros enteros etiquetadas.
Como se ilustra, la unidad 700 de gestion de recursos tambien puede incluir un componente 760 de liberacion. De acuerdo a dicha realizacion, el componente 760 de liberacion esta configurado para borrar ubicaciones de memoria correspondientes a objetos en el segmento de memoria que se consideran inaccesibles por la parte no ejecutada de la pila de llamadas. En un aspecto, el componente 760 de liberacion puede configurarse ademas para conservar respectivamente un almacenamiento de objetos accesibles por la parte no ejecutada de la pila de llamadas en sus ubicaciones de memoria originales en el interior del segmento de memoria. En otro aspecto, la unidad 700 de gestion de recursos tambien puede incluir un componente 770 de supervision, que esta configurado para supervisar un tamano del segmento de memoria durante la ejecucion de la pila de llamadas. Para esta realizacion particular, el componente 760 de liberacion puede entonces configurarse para activar un borrado de memoria asignado a objetos inaccesibles basado en el tamano del segmento de memoria que excede un umbral particular.
La figura 8 es un diagrama de flujo que ilustra una realizacion no limitativa ejemplar para etiquetar numeros enteros segun una realizacion. En 800, se etiqueta un grafico de objeto asociado con una pila de llamadas de manera que los objetos-rafz incluidos en un grafico de objeto etiquetado comprenden representaciones de numeros enteros etiquetadas y representaciones de punteros no etiquetadas. En 810, se genera entonces un segmento de memoria de objetos durante una ejecucion de la pila de llamadas, que comprende objetos incluidos en una parte ejecutada de la pila de llamadas. A continuacion, en 820, los objetos no ejecutados incluidos en una parte no ejecutada de la pila de llamadas se localizan hasta ubicaciones de memoria correspondientes en el segmento de memoria. Para esta realizacion particular, un seguimiento posterior solo se realiza en las representaciones de punteros y no en las
5
10
15
20
25
30
35
40
45
50
55
representaciones de numeros enteros. Las ubicaciones de memoria correspondientes a objetos de segmentos de memoria inaccesibles por la parte no ejecutada de la pila de llamadas se borran entonces en 830.
ENTORNOS DE RED Y DISTRIBUIDOS EJEMPLARES
Un experto en la materia puede apreciar que las diversas realizaciones para etiquetar numeros enteros en el interior de un algoritmo de recoleccion de elementos no utilizados conservativo descrito en el presente documento pueden implementarse en relacion con cualquier ordenador u otro dispositivo cliente o servidor que pueda desplegarse como parte de una red informatica o de un entorno informatico distribuido, y pueda conectarse a cualquier tipo de almacen de datos. A este respecto, las diversas realizaciones descritas en el presente documento pueden implementarse en cualquier sistema informatico o entorno que tenga cualquier numero de unidades de memoria o de almacenamiento, y cualquier numero de aplicaciones y procedimientos que se produzcan a traves de cualquier numero de unidades de almacenamiento. Esto incluye, pero no se limita a, un entorno con ordenadores servidor y ordenadores cliente desplegados en un entorno de red o un entorno informatico distribuido, que tiene almacenamiento remoto o local.
La figura 9 proporciona un diagrama esquematico no limitativo de un entorno informatico de red o distribuido ejemplar. El entorno informatico distribuido comprende objetos o dispositivos 910, 912, etc, informaticos y objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos que pueden incluir programas, procedimientos, almacenes de datos, logica programable, etc., como se representa por las aplicaciones 930, 932, 934, 936, 938. Se puede apreciar que los objetos o dispositivos 910, 912, etc., informaticos y los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos pueden comprender dispositivos diferentes, tales como PDA, dispositivos de audioMdeo, telefonos moviles, reproductores de MP3, portatiles, etc.
Cada objeto o dispositivo 910, 912, etc., informatico y los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos, pueden comunicarse con uno o mas objetos o dispositivos 910, 912, etc., informaticos y los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos mediante la red 940 de comunicaciones, directa o indirectamente. Aunque se ilustra como un unico elemento en la figura 9, la red 940 puede comprender otros objetos informaticos y dispositivos informaticos que proporcionan servicios al sistema de la figura 9, y/o puede representar multiples redes interconectadas, que no se muestran. Cada objeto o dispositivo 910, 912, etc., o 920, 922, 924, 926, 928, etc., informatico tambien puede contener una aplicacion, tal como las aplicaciones 930, 932, 934, 936, 938, que podnan hacer uso de una interfaz de programacion de aplicaciones (API), u otro objeto, software, firmware y/o hardware, adecuados para la comunicacion con una infraestructura para la informacion o la implementacion de la misma como un servicio desde cualquier plataforma tal como se proporciona segun diversas realizaciones.
Hay una variedad de sistemas, componentes y configuraciones de red que soportan entornos informaticos distribuidos. Por ejemplo, los sistemas informaticos pueden conectarse entre sf mediante sistemas de cableado o sistemas inalambricos, redes locales o redes ampliamente distribuidas. Actualmente, muchas redes estan acopladas a Internet, lo que proporciona una infraestructura para la computacion ampliamente distribuida y abarca muchas redes diferentes, aunque cualquier infraestructura de red puede ser usada para comunicaciones ejemplares hechas incidentes con tecnicas tal como se describe en diversas realizaciones.
De este modo, se pueden usar una multitud de topologfas de red e infraestructuras de red, tales como arquitecturas cliente/servidor, punto a punto o hubridas. En una arquitectura cliente/servidor, particularmente un sistema de red, un cliente suele ser un ordenador que accede a recursos de red compartidos proporcionados por otro ordenador, por ejemplo, un servidor. En la ilustracion de la figura 9, como ejemplo no limitativo, los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos pueden considerarse clientes y los objetos o dispositivos 910, 912, etc., informaticos pueden considerarse servidores en los que los objetos o dispositivos 910, 912, etc., informaticos proporcionan servicios de datos, tales como la recepcion de datos desde los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos, almacenamiento de datos, procesamiento de datos, transmision de datos a los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos, aunque cualquier ordenador puede considerarse un cliente, un servidor o ambos, dependiendo de las circunstancias. Cualquiera de estos dispositivos informaticos puede procesar datos o solicitar servicios o tareas que puedan implicar la gestion de memoria y tecnicas relacionadas como se describe en el presente documento para una o mas realizaciones.
Normalmente, un servidor es un sistema informatico remoto accesible a traves de una red remota o local, tal como Internet o las infraestructuras de red inalambricas. El procedimiento cliente puede estar activo en un primer sistema informatico y el procedimiento servidor puede estar activo en un segundo sistema informatico, comunicandose entre sf mediante un medio de comunicaciones, proporcionando de este modo funcionalidad distribuida y permitiendo que multiples clientes aprovechen las capacidades de recopilacion de informacion del servidor. Cualquier objeto de software usado segun el perfil de usuario se puede proporcionar de forma independiente o se puede distribuir a traves de multiples dispositivos u objetos informaticos.
En un entorno de red en el que la red/bus 940 de comunicaciones es Internet, por ejemplo, los objetos o dispositivos 910, 912, etc., informaticos pueden ser servidores web con los que se comunican los objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos a traves de cualquiera de una serie de protocolos conocidos, tales como el protocolo de transferencia de hipertexto (HTTP). Como se ha mencionado, los objetos o dispositivos 910, 912, etc., informaticos pueden servir tambien como objetos o dispositivos 920, 922, 924, 926, 928, etc., informaticos, o
5
10
15
20
25
30
35
40
45
50
55
viceversa, como puede ser caractenstico de un entorno informatico distribuido.
DISPOSITIVO INFORMATICO EJEMPLAR
Como se ha mencionado, varias realizaciones descritas en el presente documento se aplican a cualquier dispositivo en el que puede ser deseable implementar una infraestructura para etiquetar numeros enteros en el interior de un algoritmo de recoleccion de elementos no utilizados conservativo. Por lo tanto, se entiende que se contemplan dispositivos manuales, portatiles y otros dispositivos informaticos y objetos informaticos de todo tipo para uso en relacion con las diversas realizaciones descritas en el presente documento, es decir, en cualquier lugar en que un dispositivo pueda proporcionar alguna funcionalidad en relacion con la implementacion de un algoritmo de recoleccion de elementos no utilizados conservativo con numeros enteros etiquetados. Por consiguiente, el ordenador remoto de finalidad general descrito a continuacion en la figura 10 es solo un ejemplo, y las realizaciones de la presente divulgacion se pueden implementar con cualquier cliente que tenga interoperabilidad e interaccion de red/bus.
Aunque no es necesario, cualquiera de las realizaciones puede implementarse parcialmente a traves de un sistema operativo, para ser usado por un desarrollador de servicios para un dispositivo u objeto, y/o incluido en el software de aplicacion que opera en relacion con el (los) componente(s) operativo(s). El software puede describirse en el contexto general de instrucciones ejecutables por ordenador, tales como modulos de programa, que son ejecutadas por uno o mas ordenadores, tales como estaciones de trabajo de cliente, servidores u otros dispositivos. Los expertos en la materia apreciaran que las interacciones de red se pueden practicar con una variedad de configuraciones y protocolos de sistemas informaticos.
La figura 10 ilustra, de este modo, un ejemplo de un entorno 1000 de sistema informatico adecuado en el que se pueden implementar una o mas de las realizaciones, aunque como se ha explicado anteriormente, el entorno 1000 de sistema informatico es solo un ejemplo de un entorno informatico adecuado y no pretende sugerir ninguna limitacion en cuanto al ambito de uso o funcionalidad de cualquiera de las realizaciones. El entorno 1000 informatico no debe interpretarse como que tenga alguna dependencia o necesidad relacionada con alguno de los componentes o con una combinacion de los mismos ilustrados en el entorno 1000 operativo ejemplar.
Con referencia a la figura 10, un dispositivo remoto ejemplar para implementar una o mas realizaciones en el presente documento puede incluir un dispositivo informatico de finalidad general en forma de un ordenador 1010 portatil. Los componentes del ordenador 1010 portatil pueden incluir, pero no se limitan a, una unidad 1020 de procesamiento, una memoria 1030 de sistema y un bus 1021 de sistema que acopla varios componentes del sistema incluyendo la memoria de sistema a la unidad 1020 de procesamiento.
El ordenador 1010 incluye, normalmente, una variedad de medios legibles por ordenador y puede ser cualquier medio disponible al que pueda acceder el ordenador 1010. La memoria 1030 de sistema puede incluir medios de almacenamiento informaticos en forma de memoria volatil y/o no volatil tal como la memoria de solo lectura (ROM) y/o memoria de acceso aleatorio (RAM). A modo de ejemplo no limitativo, la memoria 1030 tambien puede incluir un sistema operativo, programas de aplicacion, otros modulos de programa y datos de programa. El software se puede incorporar en un disco versatil digital (DVD), disco compacto (CD) u otro medio de almacenamiento extrafble tambien.
Un usuario puede introducir comandos e informacion en el ordenador 1010 a traves de dispositivos 1040 de entrada. Un monitor u otro tipo de dispositivo de visualizacion esta tambien conectado al bus 1021 de sistema a traves de una interfaz, tal como la interfaz 1050 de salida. Ademas de un monitor, los ordenadores tambien pueden incluir otros dispositivos de salida perifericos, tales como altavoces y una impresora, que pueden conectarse a traves de la interfaz 1050 de salida.
El ordenador 1010 puede operar en un entorno de red o distribuido usando conexiones logicas a uno o mas ordenadores remotos, tal como el ordenador 1070 remoto. El ordenador 1070 remoto puede ser un ordenador personal, un servidor, un enrutador, un PC en red, un dispositivo de pares u otro nodo de red comun o cualquier otro dispositivo de consumo o transmision de medios remoto, y puede incluir cualquiera o todos los elementos descritos anteriormente con respecto al ordenador 1010. Las conexiones logicas representadas en la figura 10 incluyen una red 1071, como una red de area local (LAN) o una red de area amplia (WAN), pero tambien pueden incluir otras redes/buses. Tales entornos de red son comunes en hogares, oficinas, redes informaticas corporativas, intranet e Internet.
Como se ha mencionado anteriormente, aunque se han descrito realizaciones ejemplares en relacion con diversos dispositivos informaticos, redes y arquitecturas publicitarias, los conceptos subyacentes pueden aplicarse a cualquier sistema de red y cualquier dispositivo o sistema informatico en el que es deseable gestionar la memoria.
Existen multiples maneras de implementar una o mas de las realizaciones descritas en el presente documento, por ejemplo, una API adecuada, kit de herramientas, codigo de controlador, sistema operativo, control, objeto de software independiente o descargable, etc., que permite a las aplicaciones y servicios usar la gestion de memoria. Las realizaciones pueden contemplarse desde la perspectiva de una API (u otro objeto de software), asf como desde un objeto de software o hardware que facilita la provision de gestion de memoria segun una o mas de las
5
10
15
20
25
30
35
40
45
50
realizaciones descritas. Diversas implementaciones y realizaciones descritas en el presente documento pueden tener aspectos que estan totalmente en hardware, parcialmente en hardware y parcialmente en software, as^ como en software.
La palabra "ejemplar" se usa en el presente documento para indicar que sirve como ejemplo, caso o ilustracion. Para evitar dudas, la materia objeto desvelada en el presente documento no esta limitada por tales ejemplos. Ademas, cualquier aspecto o diseno descrito en el presente documento como "ejemplar" no debe interpretarse necesariamente como preferente o ventajoso con respecto a otros aspectos o disenos, ni pretende excluir estructuras y tecnicas ejemplares equivalentes conocidas por los expertos en la materia. Ademas, en la medida en que los terminos "incluye", "tiene", "contiene" y otras palabras similares se usan en la descripcion detallada o en las reivindicaciones, para evitar dudas, tales terminos pretenden ser inclusivos de manera similar al termino "que comprende" como una palabra de transicion abierta sin excluir ningun elemento adicional u otros elementos.
Como se ha mencionado, las diversas tecnicas descritas en el presente documento pueden implementarse en relacion con hardware o software o, cuando sea apropiado, con una combinacion de ambos. Como se usan en el presente documento, los terminos "componente", "sistema" y similares pretenden referirse igualmente a una entidad relacionada con el ordenador, ya sea hardware, una combinacion de hardware y software, software o software en ejecucion. Por ejemplo, un componente puede ser, pero no esta limitado a ser, un procedimiento que se ejecuta en un procesador, un procesador, un objeto, un ejecutable, un hilo de ejecucion, un programa y/o un ordenador. A modo de ilustracion, tanto una aplicacion que se ejecuta en el ordenador como el ordenador pueden ser un componente. Uno o mas componentes pueden residir en el interior de un procedimiento y/o hilo de ejecucion y un componente puede localizarse en un ordenador y/o distribuirse entre dos o mas ordenadores.
Los sistemas mencionados anteriormente se han descrito con respecto a la interaccion entre varios componentes. Se puede apreciar que tales sistemas y componentes pueden incluir aquellos componentes o subcomponentes especificados, algunos de los componentes o subcomponentes especificados, y/o componentes adicionales, y segun diversas permutaciones y combinaciones de lo que se ha mencionado anteriormente. Los subcomponentes tambien pueden implementarse como componentes acoplados comunicativamente a otros componentes en lugar de incluirse en el interior de componentes principales (jerarquicos). Ademas, se observa que uno o mas componentes pueden combinarse en un unico componente que proporciona funcionalidad agregada o dividirse en varios subcomponentes separados, y se pueden proporcionar una o mas capas intermedias, tal como una capa de gestion, para acoplarse comunicativamente con tales subcomponentes con el fin de proporcionar funcionalidad integrada. Cualquier componente descrito en el presente documento tambien puede interactuar con uno o mas componentes no descritos espedficamente en el presente documento, pero generalmente conocidos por los expertos en la materia.
En vista de los sistemas ejemplares descritos anteriormente, se pueden apreciar metodologfas que se pueden implementar segun la materia objeto desvelada con referencia a los diagramas de flujo de las diversas figuras. Aunque con fines de simplicidad de explicacion, las metodologfas se muestran y describen como una serie de bloques, debe entenderse y apreciarse que la materia objeto reivindicada no esta limitada por el orden de los bloques, ya que algunos bloques pueden ocurrir en ordenes diferentes y/o simultaneamente con otros bloques a partir de lo que se representa y describe en el presente documento. Cuando se ilustra un flujo no secuencial o ramificado a traves del diagrama de flujo, se puede apreciar que se pueden implementar otras diversas ramificaciones, trayectorias de flujo y ordenes de los bloques que consiguen el mismo resultado o un resultado similar. Ademas, no todos los bloques ilustrados pueden ser necesarios para implementar las metodologfas descritas a continuacion.
Aunque en algunas realizaciones se ilustra una perspectiva del lado del cliente, para evitar dudas debe entenderse que existe una perspectiva de servidor correspondiente, o viceversa. De manera similar, cuando se practica un procedimiento, se puede proporcionar un dispositivo correspondiente que tiene almacenamiento y al menos un procesador configurado para practicar dicho procedimiento a traves de uno o mas componentes.
Aunque las diversas realizaciones se han descrito en relacion con las realizaciones preferentes de las diversas figuras, debe entenderse que pueden usarse otras realizaciones similares o se pueden hacer modificaciones y adiciones a la realizacion descrita para realizar la misma funcion sin desviarse de allf. Aun mas, se pueden implementar uno o mas aspectos de las realizaciones descritas anteriormente en una pluralidad de chips o dispositivos de procesamiento o a traves de los mismos, y el almacenamiento puede verse afectado de manera similar a traves de una pluralidad de dispositivos. Por lo tanto, la presente invencion no debe limitarse a ninguna realizacion unica, sino que debe interpretarse en amplitud y ambito segun las reivindicaciones adjuntas.

Claims (15)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    REIVINDICACIONES
    1. Un procedimiento, que comprende:
    la identificacion (600) de objetos^z incluidos en una pila de llamadas, en el que los objetos-rafz comprenden representaciones de numeros enteros y representaciones de punteros;
    el etiquetado (610) de las representaciones de numeros enteros, en el que una representacion de numeros enteros etiquetada se puede distinguir de una representacion de puntero no etiquetada;
    el seguimiento (620) de los objetos-rafz en un conjunto de ubicaciones de memoria correspondientes, en el que se realiza un seguimiento posterior en la representacion de puntero no etiquetada, y en el que el seguimiento posterior es omitido en la representacion de numeros enteros etiquetada; y la liberacion (630) de memoria asignada a un conjunto de objetos inaccesibles por la pila de llamadas.
  2. 2. El procedimiento segun la reivindicacion 1, en el que el etiquetado comprende la transformacion de las representaciones de numeros enteros en una estructura de datos diferente.
  3. 3. El procedimiento segun la reivindicacion 2, en el que la transformacion comprende la dedicacion a una etiqueta de al menos un bit en la estructura de datos diferente.
  4. 4. El procedimiento segun la reivindicacion 1, en el que la liberacion comprende la conservacion, respectivamente, de objetos accesibles en las ubicaciones de almacenamiento originales de un segmento de memoria.
  5. 5. El procedimiento segun la reivindicacion 4, en el que la conservacion comprende el mantenimiento de una separacion de objetos del segmento de memoria segun un conjunto fijo de lfmites en el interior del segmento de memoria.
  6. 6. El procedimiento segun la reivindicacion 1, que comprende ademas:
    la ejecucion de la pila de llamadas, en el que los objetos llamados se colocan sobre un segmento de memoria; y la comparacion de un tamano del segmento de memoria con un umbral, en el que un lanzamiento de un algoritmo de recoleccion de elementos no utilizados se basa en si el tamano del segmento de memoria excede el umbral.
  7. 7. El procedimiento segun la reivindicacion 6, en el que la ejecucion comprende la compilacion de un programa JavaScript.
  8. 8. El procedimiento segun la reivindicacion 6, en el que la ejecucion comprende la modificacion de un modelo de objeto de documento.
  9. 9. Un dispositivo (500) de gestion de memoria, que comprende:
    una memoria (520) que tiene componentes ejecutables por ordenador almacenados en la misma; y un procesador (510) acoplado mediante comunicacion a la memoria, estando el procesador configurado para ejecutar los componentes ejecutables por ordenador, comprendiendo los componentes ejecutables por ordenador:
    un componente (530) de barrido configurado para identificar objetos-rafz incluidos en una pila de llamadas, en el que los objetos-rafz comprenden representaciones de numeros enteros y representaciones de punteros; un componente (540) de etiquetado configurado para etiquetar las representaciones de numeros enteros, en el que una representacion de numeros enteros etiquetada se puede distinguir de una representacion de puntero no etiquetada;
    un componente (550) de seguimiento configurado para localizar los objetos-rafz en un conjunto de ubicaciones de memoria correspondientes, en el que se realiza un seguimiento posterior en la representacion de puntero no etiquetada, y en el que el seguimiento posterior es omitido en la representacion de numero entero etiquetada; y
    un componente (560) de reciclaje configurado para liberar memoria asignada a un conjunto de objetos inaccesibles por la pila de llamadas.
  10. 10. El dispositivo (500) de gestion de memoria segun la reivindicacion 9, en el que el componente (540) de etiquetado esta configurado para transformar las representaciones de numeros enteros en una estructura de datos diferente.
  11. 11. El dispositivo (500) de gestion de memoria segun la reivindicacion 10, en el que el componente (540) de etiquetado esta configurado para dedicar a una etiqueta al menos un bit en la estructura de datos diferente.
  12. 12. El dispositivo (500) de gestion de memoria segun la reivindicacion 9, en el que el componente (560) de reciclaje esta configurado para conservar, respectivamente, objetos accesibles en ubicaciones de almacenamiento originales de un segmento (200; 320; 420) de memoria.
  13. 13. El dispositivo (500) de gestion de memoria segun la reivindicacion 12, en el que el componente (560) de reciclaje esta configurado para mantener una separacion de objetos de segmentos de memoria segun un conjunto fijo de lfmites en el interior del segmento (200; 320; 420) de memoria.
  14. 14. El dispositivo (500) de gestion de memoria segun la reivindicacion 9, en el que el componente (560) de reciclaje 5 esta configurado para colocar objetos llamados por la pila de llamadas sobre un segmento (200; 320; 420) de
    memoria, y en el que el componente de reciclaje esta configurado ademas para lanzar un algoritmo de recoleccion de elementos no utilizados que se basa en si un tamano del segmento de memoria excede un umbral.
  15. 15. El dispositivo (500) de gestion de memoria segun la reivindicacion 9, en el que la pila de llamadas esta asociada con una compilacion de un programa JavaScript.
    10
ES12776762.2T 2011-04-25 2012-04-06 Recolección de elementos no utilizados conservativa y números enteros etiquetados para la gestión de memoria Active ES2615855T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201113093724 2011-04-25
US13/093,724 US8862640B2 (en) 2011-04-25 2011-04-25 Conservative garbage collecting and tagged integers for memory management
PCT/US2012/032639 WO2012148650A2 (en) 2011-04-25 2012-04-06 Conservative garbage collecting and tagged integers for memory management

Publications (1)

Publication Number Publication Date
ES2615855T3 true ES2615855T3 (es) 2017-06-08

Family

ID=47022110

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12776762.2T Active ES2615855T3 (es) 2011-04-25 2012-04-06 Recolección de elementos no utilizados conservativa y números enteros etiquetados para la gestión de memoria

Country Status (7)

Country Link
US (3) US8862640B2 (es)
EP (1) EP2702490B1 (es)
JP (2) JP2014513354A (es)
KR (4) KR102139043B1 (es)
CN (2) CN106294199B (es)
ES (1) ES2615855T3 (es)
WO (1) WO2012148650A2 (es)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862640B2 (en) 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
US20140115291A1 (en) * 2012-10-19 2014-04-24 Advanced Micro Devices, Inc. Numa optimization for garbage collection of multi-threaded applications
KR101703984B1 (ko) * 2014-07-18 2017-02-09 주식회사 큐램 메모리 처리 방법, 및 메모리 처리 시스템
FR3070775B1 (fr) * 2017-09-04 2019-08-23 Vsora Allocation dynamique utilisant plusieurs piles
US10459656B1 (en) * 2018-06-25 2019-10-29 International Business Machines Corporation Method and apparatus to represent activation frame for pause-less garbage collection
US11879789B2 (en) 2019-07-02 2024-01-23 International Business Machines Corporation On-chip thermometer for superconducting quantum computing devices
USD967377S1 (en) 2020-10-08 2022-10-18 Samsung Electronics Co., Ltd. Air purifier
KR20220102421A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 관리 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2920660B2 (ja) * 1990-06-07 1999-07-19 富士ゼロックス株式会社 ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
US5819299A (en) 1996-06-06 1998-10-06 Electric Communities Process for distributed garbage collection
US5920876A (en) 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US6101580A (en) 1997-04-23 2000-08-08 Sun Microsystems, Inc. Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
US6782192B1 (en) * 1999-04-20 2004-08-24 Victor Company Of Japan, Ltd. Recording medium apparatus and method related to information representing tunes
US6675354B1 (en) 1999-11-18 2004-01-06 International Business Machines Corporation Case-insensitive custom tag recognition and handling
US6598141B1 (en) * 2001-03-08 2003-07-22 Microsoft Corporation Manipulating interior pointers on a stack during garbage collection
GB0229892D0 (en) 2002-12-21 2003-01-29 Ibm Method and apparatus for caching documents
US7168063B2 (en) 2003-06-10 2007-01-23 Microsoft Corporation Systems and methods for employing tagged types in a dynamic runtime environment
US7249235B2 (en) 2004-06-21 2007-07-24 Oracle International Corporation Architecture for a scalable and user-extensible heap dump analysis tool
US7325106B1 (en) * 2004-07-16 2008-01-29 Sun Microsystems, Inc. Method for monitoring heap for memory leaks
US7730016B2 (en) 2005-01-31 2010-06-01 Oracle International Corporation Identification of false ambiguous roots in a stack conservative garbage collector
US7873943B2 (en) * 2005-12-28 2011-01-18 Intel Corporation Inserting stack clearing code in conservative garbage collection
US7631024B2 (en) 2006-01-03 2009-12-08 Sun Microsystems, Inc. Method and apparatus for facilitating mark-sweep garbage collection with reference counting
US7614003B2 (en) 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US20090327377A1 (en) * 2008-06-26 2009-12-31 Tatu Ylonen Oy Ltd Copying entire subgraphs of objects without traversing individual objects
US7937419B2 (en) * 2008-06-26 2011-05-03 Tatu Ylonen Oy Garbage collection via multiobjects
JP5153539B2 (ja) * 2008-09-22 2013-02-27 株式会社日立製作所 メモリ管理方法およびその方法を用いるコンピュータ
US8341608B2 (en) 2008-11-13 2012-12-25 Visicom Media, Inc. Cross-browser toolbar and method thereof for facilitating cross-browser interoperability
US8335806B2 (en) * 2010-02-01 2012-12-18 Oracle America, Inc. Marking algorithm for garbage collection using a rescan map
US8423589B2 (en) * 2011-03-14 2013-04-16 International Business Machines Corporation Copy collector with efficient abort-on-copy transition to mark collector
US8862640B2 (en) 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
CN102622599B (zh) * 2012-01-21 2015-12-02 松翰科技股份有限公司 使用点编码的数据输出输入方法

Also Published As

Publication number Publication date
CN106294199B (zh) 2019-11-05
EP2702490A2 (en) 2014-03-05
US20150006557A1 (en) 2015-01-01
KR20180108850A (ko) 2018-10-04
KR20190020837A (ko) 2019-03-04
US20120271866A1 (en) 2012-10-25
CN103493025B (zh) 2016-10-05
CN103493025A (zh) 2014-01-01
JP2018067331A (ja) 2018-04-26
KR101993793B1 (ko) 2019-06-27
WO2012148650A3 (en) 2013-02-28
EP2702490A4 (en) 2015-01-21
WO2012148650A2 (en) 2012-11-01
KR20140019413A (ko) 2014-02-14
EP2702490B1 (en) 2016-11-16
US9684679B2 (en) 2017-06-20
JP6637022B2 (ja) 2020-01-29
KR101935346B1 (ko) 2019-01-04
KR102139043B1 (ko) 2020-07-29
KR20190058697A (ko) 2019-05-29
US8862640B2 (en) 2014-10-14
KR102061466B1 (ko) 2019-12-31
US10628398B2 (en) 2020-04-21
JP2014513354A (ja) 2014-05-29
CN106294199A (zh) 2017-01-04
US20170322955A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
ES2615855T3 (es) Recolección de elementos no utilizados conservativa y números enteros etiquetados para la gestión de memoria
US8578370B2 (en) Managing memory in multiple virtual machines
US8930902B2 (en) Automatic selection of lowest configuration feature level by functionality exploited
US20160378643A1 (en) Creating software performance testing environment based on virtual machine
US20230099150A1 (en) Structural information preserving for graph-to-text generation
CN105393218B (zh) 用来重构可编程电路的方法、设备以及系统
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
US10545909B2 (en) Computing system management using shared memory
US20230086195A1 (en) Efficient and extensive function groups with multi-instance function support for cloud based processing
CN106886477A (zh) 一种云系统中监控阈值设定方法及装置
US20140164857A1 (en) Testing Disk Drives Shared by Multiple Processors in a Supercomputer Complex
US10375206B1 (en) Entity-component architecture with components having multiple configurations
US11640281B2 (en) Tool for introspection in object-oriented source code
CN112948336B (zh) 数据加速方法及缓存单元、电子设备及存储介质
JP2014513342A (ja) メモリー管理のための同時マーク及び同時スイープによる保守的ガベージコレクション
CN114968216A (zh) 应用程序开发工程生成方法和装置
US10603583B1 (en) Entity-component architecture with components having multiple configurations
US11615109B1 (en) Efficient deserialization from standardized data files
CN111225044B (zh) 一种客户端消息推送方法、装置和系统
US20160162391A1 (en) Application development via a multi-unit device
US20120066224A1 (en) Clustering of analytic functions
US20190278742A1 (en) Techniques for tracking independent hardware graphics processing unit (gpu) performance
CN117544641A (zh) 云主机镜像上传方法和装置
CN113282806A (zh) 设备信息处理方法及装置、设备、介质
CN115033737A (zh) 直播间架构系统及其运行方法、电子设备和介质