Brevet FR3064773A1 — publié le 20181005

DOMAINE DE L'INVENTION La présente invention concerne un procédé de ramassage de miettes dans une mémoire d'un dispositif dans lequel un profil d'utilisateur peut être sélectivement activé parmi plusieurs profils d'utilisateurs. ETAT DE LA TECHNIQUE De façon bien connue, un ramasse-miette est un sous-programme de gestion automatique de mémoire. Le ramasse-miette est responsable de la suppression dans la mémoire d'objets qui ne sont plus utilisées par un quelconque programme. Lors de sa mémorisation dans une mémoire d'un dispositif, un objet est typiquement mis en dépendance directe ou indirecte avec une racine représentative d'une ressource persistante du dispositif (un registre machine du dispositif, une pile d'exécution, un pointeur d'instruction, une variable globale, etc.). Une telle racine est communément appelée - racine de persistance ». Lorsqu'un objet cesse d'être utilisé par un quelconque programme du dispositif, cet objet n'est plus lié à une quelconque racine par un lien de dépendance. Ce sont seuls ces objets non utilisés qu'un ramasse-miette peut supprimer dans la mémoire. Un type de ramasse-miettes bien connu, que l'on appelle de type - marquant et nettoyant » (- mark and sweep » en anglais), met en oeuvre un cycle de ramassage en deux phases : une phase de marquage et une phase de nettoyage. La phase de marquage comprend : - une recherche des éventuels objets encore liés par un lien de dépendance avec une racine, - la génération d'une table de marquage comprenant des données indiquant, pour chaque objet, si l'objet est à conserver ou à supprimer de la mémoire sur la base de cette recherche. La phase de nettoyage comprend une suppression dans de la mémoire de chaque objet indiqué comme étant à supprimer dans la table de marquage générée. Par ailleurs, il est connu de prévoir dans un dispositif plusieurs profils d'utilisateur, un seul parmi les profils d'utilisateur étant activable à la fois dans ce dispositif. Un profil d'utilisateur est par exemple associé à des données propres à cet utilisateur et/ou des programmes propres à cet utilisateur. Une question qui se pose est celle de définir comment un ramasse-miette devrait se comporter dans un tel dispositif, lors d'un tel changement de profil d'utilisateur. On a illustré en figure 1 le contenu d'une mémoire d'un dispositif ayant un premier profil d'utilisateur PI et un deuxième profil d'utilisateur P2, lors d'une activation du premier 3064773 2 profil d'utilisateur P1 en lieu et place du deuxième profil d'utilisateur P2. Des premiers objets P101, P102, P103 sont associés au premier profil P1, c'est-à-dire que ces premiers objets ont été mémorisés dans la mémoire du dispositif pendant que le profil P1 était sélectivement actif. L'objet P102 dépend de l'objet P101. L'objet P103 n'est en revanche 5 plus utilisé par un quelconque programme ; il ne dépend plus d'un autre objet. Similairement, les objets P201, P202, P203 sont associés au premier profil P2, c'est-à-dire que ces objets ont été mémorisés dans la mémoire du dispositif pendant que le profil P2 était sélectivement actif. L'objet P202 dépend de l'objet P201. L'objet P203 n'est en revanche plus utilisé par un quelconque programme ; il ne dépend plus d'un autre objet. 10 Il convient de veiller à ce que tout objet utilisé par un programme ne soit pas supprimé de la mémoire pendant que le profil correspondant est inactif, sans quoi ce programme ne pourra pas fonctionner correctement lors d'une réactivation ultérieure de ce profil d'utilisateur. Afin d'éviter un tel problème, il pourrait être envisagé, au cours d'une phase de 15 marquage, de procéder à une recherche exhaustive sur tous les objets présents en mémoire quel que soit le profil d'utilisateur auxquels ils sont associés. Cependant une telle recherche exhaustive aurait pour inconvénient de prendre du temps, avec pour conséquence que la durée mise par le dispositif pour changement de profil actif serait augmentée. 20 EXPOSE DE L'INVENTION Un but de l'invention est de mettre en oeuvre, dans un dispositif dans lequel un profil d'utilisateur parmi plusieurs est activable à la fois, un ramassage de miettes qui soit à la rapide et qui ne supprime indûment pas d'objet susceptible d'être encore utilisé par un 25 programme. Il est dès lors proposé, selon un premier aspect de l'invention, un procédé de ramassage de miettes dans une mémoire d'un dispositif, la mémoire contenant : - au moins un premier objet ayant été mémorisé dans la mémoire pendant qu'au moins un premier profil d'utilisateur du dispositif était sélectivement actif, 30 - au moins un premier jeu de données de marquage indiquant, pour chaque premier objet, si le premier objet est à conserver ou à supprimer de la mémoire, - au moins un deuxième objet ayant été mémorisé dans la mémoire pendant qu'un deuxième profil d'utilisateur du dispositif était sélectivement actif, 3064773 3 le procédé comprenant au moins un cycle de ramassage mis en oeuvre pendant que le deuxième profil d'utilisateur du dispositif est sélectivement actif, dans lequel le cycle de ramassage comprend : - une phase de marquage restreinte aux deuxièmes objets, le marquage comprenant la 5 génération d'un deuxième jeu de données de marquage indiquant, pour chaque deuxième objet, si le deuxième objet est à conserver ou à supprimer de la mémoire, - une phase de nettoyage comprenant une suppression sélective dans la mémoire d'au moins un objet indiqué comme étant à supprimer dans l'union du premier jeu de données de marquage et du deuxième jeu de données de marquage. 10 Comme les données contenues dans le premier jeu de données de marquage sont inspectées au cours de la phase de nettoyage, on s'assure que tout premier objet (associé au premier profil) indiqué comme étant à conserver ne sera pas indûment supprimé au cours de la phase de nettoyage mise en oeuvre pendant que le deuxième profil est sélectivement actif. Par ailleurs, la durée du cycle de ramassage est réduite car la phase de marquage est 15 restreinte aux deuxièmes objets, c'est-à-dire seulement aux objets qui se rapportent au deuxième profil d'utilisateur. Le contenu du premier jeu de données de marquage est réutilisé lors du cycle de ramassage effectué alors que le deuxième profil d'utilisateur est actif. Mieux encore, la durée d'un cycle de ramassage selon ce procédé est quasi- 20 indépendante du nombre de profils d'utilisateur du dispositif. En effet, même lorsqu'un grand nombre de premiers jeux de données de marquage sont présentes dans la mémoire (chaque premier jeu étant associé à un profil d'utilisateur distinct), l'inspection de tous ces jeux au cours d'une phase de nettoyage mise en oeuvre pendant que le deuxième profil d'utilisateur est actif prend considérablement moins de temps qu'une analyse de liens de 25 dépendance mise en oeuvre sur tous les premiers objets identifiés dans toutes ces jeux de données différents. Le procédé proposé peut en outre être complété à l'aide des caractéristiques suivantes prises seules ou en combinaison lorsque cela est techniquement possible. Les phases de nettoyage respectives de plusieurs cycles de ramassage mis en oeuvre 30 successivement pendant que le deuxième profil d'utilisateur est sélectivement actif peuvent réutiliser les mêmes données de marquage mémorisées dans le premier jeu de données de marquage. Le premier jeu de données de marquage peut être généré lors de l'activation du deuxième profil d'utilisateur en lieu et place du premier profil d'utilisateur. 35 Il peut en outre être prévu que : 3064773 4 - chaque premier objet a été, lors de sa mémorisation, lié en mémoire par un lien de dépendance à une racine représentative d'une ressource persistante du dispositif propre au premier profil utilisateur, dite première racine, - un premier objet a été marqué comme à conserver ou à supprimer de la mémoire 5 dans le premier jeu de données de marquage selon que le premier objet a été trouvé au non au cours d'une recherche des éventuels premiers objets liés par un lien de dépendance avec une première racine, ladite recherche ayant été mise en oeuvre uniquement à partir de chaque première racine de sorte à être restreinte aux premiers objets. 10 Le premier jeu de données de marquage peut comprendre, pour chaque premier objet, un unique bit de marquage dont la valeur indique si le premier objet est à conserver ou à supprimer de la mémoire. Les caractéristiques suivantes peuvent être mise en oeuvre dans le procédé proposé: - chaque deuxième objet a été, lors de sa mémorisation, lié en mémoire par un lien de 15 dépendance à une racine représentative d'une ressource persistante du dispositif propre au deuxième profil utilisateur, dite deuxième racine, - la phase de marquage comprend une recherche des éventuels deuxièmes objets encore liés par un lien de dépendance avec une deuxième racine, ladite recherche étant mise en oeuvre uniquement à partir de chaque deuxième racine de sorte à être 20 restreinte aux deuxièmes objets, - un deuxième objet est marqué comme à conserver ou à supprimer de la mémoire dans le deuxième jeu de données de marquage selon que le deuxième objet a été trouvé au non au cours de la recherche. Ces caractéristiques ont pour effet de permettre de savoir à quel profil se rapporte 25 chaque objet sans pour autant consommer une grande quantité de mémoire supplémentaire. Une autre solution pourrait être la suivante : pour chaque objet, une information d'appartenance indiquant le profil auquel cet objet est associé à l'objet. Au cours d'un cycle de ramassage, pour chaque objet présent en mémoire, on lit cette information d'appartenance, et les phases de marquage et de nettoyage ne sont mises en oeuvre que sur 30 les objets associés au profil actif d'après leur information d'appartenance. Tous les autres objets sont ignorés, et donc conservés en mémoire. Toutefois, cette autre solution a comme inconvénient que de telles informations d'appartenance consommeraient beaucoup de mémoire supplémentaire. La recherche précitée peut être mise en oeuvre selon la méthode des trois couleurs. 3064773 5 Le procédé peut également comprendre une étape de réunion du premier jeu de données de marquage et du deuxième jeu de marquage, de sorte à former un jeu de données de marquage global. Dans ce cas, la phase de nettoyage comprend une lecture du jeu de données de marquage global et une suppression sélective dans la mémoire d'au moins un 5 objet indiqué comme étant à supprimer dans le jeu de données de marquage global lu. Le jeu de données global peut être mémorisé uniquement dans une mémoire volatile du dispositif. Selon un deuxième aspect de l'invention, il est également proposé un ramasse-miettes 10 comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications précédentes, lorsque ce procédé est exécuté par au moins un processeur. Selon un troisième aspect de l'invention, il est proposé un dispositif dans lequel un 15 profil d'utilisateur est sélectivement activable parmi plusieurs profils d'utilisateurs, le dispositif comprenant : - une mémoire contenant : o au moins un premier objet ayant été mémorisé dans la mémoire pendant qu'au moins un premier profil d'utilisateur du dispositif était actif, 20 o un premier jeu de données de marquage indiquant, pour chaque premier objet, si le premier objet est à conserver ou à supprimer de la mémoire, o au moins un deuxième objet ayant été mémorisé dans la mémoire pendant qu'un premier profil d'utilisateur du dispositif était sélectivement actif, - au moins un processeur configure pour mettre en oeuvre au moins un cycle de 25 ramassage pendant que le deuxième profil d'utilisateur du dispositif est sélectivement actif, le cycle de ramassage comprenant : o une phase de marquage restreinte aux deuxièmes objets, le marquage comprenant la génération d'un deuxième jeu de données de marquage indiquant, pour chaque deuxième objet, si le deuxième objet est à conserver 30 ou à supprimer de la mémoire, o une phase de nettoyage une suppression sélective dans la mémoire d'au moins un objet indiqué comme étant à supprimer dans l'union du premier jeu de données de marquage et du deuxième jeu de données de marquage. Le dispositif est par exemple une carte à puce. 35 3064773 6 DESCRIPTION DES FIGURES D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : 5 - Les figures 1 et 2, déjà discutées, représentent des objets contenus dans une mémoire d'un dispositif. - La figure 3 illustre de façon schématique un dispositif selon un mode de réalisation de l'invention. - La figure 4 est un organigramme d'étapes d'un procédé de ramassage de miettes selon 10 un mode de réalisation de l'invention. - La figure 5 illustre de façon schématique des objets contenus dans une mémoire d'un dispositif à un premier instant, au cours de la mise en oeuvre du procédé de ramassage de miettes selon le mode de réalisation de la figure 4. - La figure 6 illustre le contenu d'une table de marquage générée sur la base des objets 15 représentés en figure 5. - La figure 7 illustre de façon schématique des objets contenus dans une mémoire d'un dispositif à un deuxième instant, au cours de la mise en oeuvre du procédé de ramassage de miettes selon le mode de réalisation de la figure 4. - Les figures 8 et 9 illustrent le contenu de tables de marquage générées sur la base 20 des objets représentés en figure 7. - La figure 10 illustre de façon schématique des objets contenus dans une mémoire d'un dispositif à un troisième instant, au cours de la mise en oeuvre du procédé de ramassage de miettes selon le mode de réalisation de la figure 4. Sur l'ensemble des figures, les éléments similaires portent des références identiques. 25 DESCRIPTION DETAILLEE DE L'INVENTION En référence à la figure 3, un dispositif 1 comprend au moins un processeur 2 et au moins une mémoire 4. Le dispositif 1 est par exemple une carte à puce. La carte à puce est typiquement de 30 type eUICC (- Embedded Universal Integrated Circuit Card »), par exemple une carte SIM. La mémoire 4 comprend au moins une mémoire volatile 6, par exemple de type RAM. La mémoire volatile 6 a pour fonction de mémoriser temporairement des données, par exemple des données calculées par le processeur 2. Le contenu de la mémoire volatile 6 est effacé lors d'une mise hors tension du dispositif électronique I. 3064773 7 La mémoire 4 comprend en outre au moins une mémoire non volatile 8, par exemple de type disque dur, SSD, flash, EEPROM, etc. La mémoire non volatile 8 a pour fonction de mémoriser des données de manière persistante, au sens où une mise hors tension du dispositif électronique 1 n'efface pas le contenu de la mémoire non volatile. 5 Le processeur 2 est adapté pour exécuter des instructions de code de programme appartenant à un jeu d'instructions prédéterminé. En particulier, le processeur 2 est adapté pour exécuter une machine virtuelle se présentant sous la forme d'un binaire compilé comprenant des instructions de codes appartenant à ce jeu d'instructions prédéterminé. 10 La machine virtuelle est configurée pour interpréter un programme cible, le programme cible se présentant sous la forme d'un binaire comprenant des instructions de code dans un format différent du jeu d'instruction précité, lorsque la machine virtuelle est exécutée par le processeur 2. Par exemple, la machine virtuelle est configurée pour interpréter un - bytecode » issue 15 d'une code source codé dans le langage de programmation Java, qui est un langage de programmation orienté objet. Dans un mode de réalisation particulier, le processeur 2 est configure pour exécuter le système d'exploitation Java Card. Ce système d'exploitation fournit un environnement d'exécution pour un sous-ensemble du langage Java, qui est destiné à des applications pour 20 cartes à puce. La machine virtuelle, nommée JCVM (abréviation de - Java Card Virtual Machine »), peut alors faire partie du système d'exploitation Java Card. On suppose dans la suite que la machine virtuelle est mémorisée dans la mémoire non volatile 8, de même qu'au moins un programme cible (également appelée application) interprétable par la machine virtuelle. 25 Lorsque la machine virtuelle est exécutée par le processeur 2, et que la machine virtuelle interprète un programme cible, la machine virtuelle est amenée à commander la mémorisation d'objets dans la mémoire 4, objets qui seront utilisé par le programme cible pendant une durée plus ou moins longue. De façon classique, lors de sa mémorisation dans la mémoire 4, un objet est mis en dépendance directe ou indirecte avec une racine 30 représentative d'une ressource persistante du dispositif 1 (un registre machine du dispositif 1, une pile d'exécution, un pointeur d'instruction, une variable globale, etc.). Lorsqu'un objet cesse d'être utilisé par un quelconque programme cible du dispositif, cet objet n'est plus lié à une quelconque racine par un lien de dépendance. Chaque racine est mémorisée dans la mémoire non volatile 8. 3064773 8 Par ailleurs, le dispositif 1 est configurable dans plusieurs modes d'utilisation, chaque mode d'utilisation étant défini par un profil d'utilisateur. Un seul, parmi les différents profils d'utilisateur disponibles dans le dispositif, est activable à la fois dans le dispositif 1, selon une méthode connue de l'état de la technique. Un profil d'utilisateur est par exemple associé 5 à des données propres à cet utilisateur et/ou des programmes ou applications propres à cet utilisateur. La machine virtuelle comprend un ramasse-miette. Le ramasse-miette comprend deux fonctions : une fonction ChangeProfile appelée lors d'un changement de profil actif dans le dispositif 1, et une fonction 10 GarbageCollection appelée pour effectuer un cycle de ramassage de miettes. Fonction de changement de profil actif La fonction ChangeProfile prend en paramètre un identifiant d'un ancien profil d'utilisateur Po. 15 Par convention, on appelle - ancien objet » un objet associé à l'ancien profil Po, c'est- à-dire un objet mémorisé dans la mémoire 4 alors que l'ancien profil d'utilisateur Po était actif. On appelle également - ancienne racine » une racine représentative d'une ressource persistante du dispositif propre à l'ancien profil d'utilisateur. En d'autres termes, tout ancien objet dépend lors de sa mémorisation dans la mémoire, directement ou indirectement d'une 20 ancienne racine via un lien de dépendance. La fonction ChangeProfile applique les étapes suivantes. Est créée dans la mémoire 4 une table de marquage To contenant des données de marquage propre à l'ancien profil d'utilisateur Po (si une telle table n'a pas déjà été créée lors d'un précédent appel à la fonction ChangeProfile). 25 De préférence, la table de marquage To est mémorisée dans la mémoire volatile 6, mais pas dans la mémoire non volatile 8. En effet, chaque écriture dans la mémoire non volatile prend non seulement du temps mais use également la mémoire non volatile 8, notamment lorsqu'il s'agit d'une mémoire Flash. Chaque donnée de marquage de la table de marquage To propre à l'ancien profil 30 d'utilisateur To est associée à un ancien objet ou à une ancienne racine (une racine étant en fait considérée comme un objet particulier). La fonction ChangeProfile met en oeuvre une recherche des éventuels anciens objets encore liés par un lien de dépendance avec une ancienne racine. Cette recherche est mise en oeuvre uniquement à partir de chaque ancienne racine de sorte à être restreinte aux 35 objets qui concernent l'ancien profil Po, à l'exclusion de tout autre profil. Un ancien objet 3064773 9 est marqué comme à conserver ou à supprimer de la mémoire dans la table de marquage To selon que le deuxième objet a été trouvé au non au cours de la recherche. Cette recherche est répétée pour chaque ancienne racine, s'il y en a plusieurs. La phase de marquage est restreinte dans le sens où seuls sont recherchés des objets 5 en dépendance d'une ancienne racine (racine propre à l'ancien profil Po). Tous les anciens objets sont ainsi recherchés. En revanche, tout objet dépendant d'une éventuelle racine propre à un autre profil que le profil Po n'est pas recherché. Dans un mode de réalisation, cette recherche est mise en oeuvre de la façon suivante. Dans la table de marquage To, une donnée de marquage associée à un objet indique si 10 l'objet est - visité » ou - non visité ». Par ailleurs, une donnée de marquage associé à un objet indique par ailleurs si l'objet est - accessible » ou - non accessible ». Une donnée de marquage de la table To est par exemple codée sur deux bits : un bit de visite et un bit d'accessibilité. Le bit de visite peut prendre deux valeurs : une valeur indiquant que l'objet a été visité 15 (par exemple 1) et une valeur indiquant que l'objet n'a pas encore été visité (par exemple 0). Similairement, le bit d'accessibilité peut prendre deux valeurs : une valeur indiquant que l'objet est accessible par un programme exécuté par le processeur 2, c'est-à-dire encore lié par un lien de dépendance avec une racine (par exemple 1) et une valeur indiquant le 20 contraire (par exemple 0). Chaque donnée de marquage de la table To qui est associée à un ancien objet est initialisée à la valeur - non visité, non accessible » (valeur binaire 00). Cependant, par exception, chaque donnée de marquage de la table To qui est associée à une ancienne racine est initialisée à la valeur - non visité, accessible » (valeur binaire 10). 25 Une boucle de marquage est ensuite mise en oeuvre en une ou plusieurs itérations. Au cours d'une itération de la boucle, un ancien objet dont la donnée de marquage a dans la table To comme valeur - non visité, accessible » est pris comme objet de référence. La valeur de la donnée de marquage associée à l'objet de référence est ajustée à la valeur - visité, accessible » (valeur binaire 11). 30 Par ailleurs, la valeur de la donnée de marquage associée à chaque éventuel objet directement référencé par cet objet de référence est ajustée à la valeur - non visité, accessible » (valeur binaire 01). De nouvelles itérations de la boucle sont mises en oeuvre jusqu'à qu'il n'y ait plus aucun objet indiqué dans la table To comme étant - non visité, accessible » (valeur binaire (valeur 35 binaire 01). 3064773 10 Avec cette boucle de marquage, l'analyse de liens de dépendance est mise en oeuvre selon un sens racine vers feuilles. En effet, avant le démarrage de la boucle, seul des racines sont marquées comme accessibles. Une telle implémentation est conforme à l'abstraction - des trois couleurs », définie par Dijkstra, Lamport et al. en 1978. 5 Une fois la boucle terminée, tous les objets accessibles associés à l'ancien profil Po sont marqués comme ayant été visités. Une fois la boucle de marquage terminée, il n'est plus utile de conserver en mémoire 4 une indication sur l'état visité ou non des différents objets associés à l'ancien profil Po. Ainsi, pour diminuer la taille consommée par la table To en mémoire 4, la table To est compactée de sorte que chaque donnée de marquage ne 10 comprend qu'un seul bit, ce bit étant indicatif du caractère accessible ou non de l'objet associé. L'exécution de la fonction ChangeProfile est alors terminée. Les étapes de la fonction ChangeProfile selon le mode de réalisation qui vient d'être décrit peuvent être résumées par le pseudocode en annexe 1, en fin de la présente 15 description. Fonction de ramassage de miettes La fonction GarbageCollection prend en paramètre un identifiant d'un profil d'utilisateur P du dispositif, dit profil courant dans ce qui suit. 20 Par convention, on appelle - objet courant » ou - objet associé au profil courant » un objet mémorisé dans la mémoire alors que le profil d'utilisateur courant P passé en paramètre de la fonction GarbageCollection était actif. On appelle également - racine courante » ou - racine associée au profil courant » une racine propre au profil d'utilisateur courant P. En d'autres termes, tout objet courant est ou a été lié directement ou 25 indirectement à une racine courante. La fonction GarbageCollection applique les étapes suivantes. Est créée dans la mémoire 4 une table de marquage globale T adaptée pour contenir des données de marquage pour tout objet ou racine présent en mémoire, quel que soit le profil d'utilisateur auquel ces objets ou racine se rapportent. 30 De préférence, la table de marquage globale T est mémorisée dans la mémoire volatile 6, mais pas dans la mémoire non volatile 8. En effet, chaque écriture dans la mémoire non volatile prend non seulement du temps mais use également la mémoire non volatile 8, notamment lorsqu'il s'agit d'une mémoire Flash. 3064773 11 La table de marquage globale T est de même type de la table To avant son compactage. En d'autres termes, une donnée de marquage de la table T est codée sur deux bits, un bit de visite et un bit d'accessibilité. Le contenu de chaque table propre à un profil autre que le profil courant P (chacune 5 de ces table étant générée ou mise à jour au cours d'un appel préalable à la fonction ChangeProfile) est copié dans la table de marquage global T. Dans le cas où de telles tables ont été compactées pendant l'exécution de la fonction ChangeProfile, conformément au mode de réalisation précédemment décrit, une donnée de marquage présente dans une de ces tables n'est codée que sur un bit indiquant si l'objet 10 ou la racine associé est accessible ou non. La valeur de ce bit est copiée dans la table T et il est mis en combinaison avec un bit de lecture de valeur - visité » pour former une donnée de marquage de la table de marquage globale T. Par ailleurs, des emplacements sont réservés dans la table de marquage globale T pour des données de marquage, dites courantes, car associées aux objets courants présents en 15 mémoire et aux racines courantes présents en mémoire lors de l'appel à la fonction GarbageCollection. Les données de marquage courantes sont générées sur la base d'une analyse de liens de dépendance depuis une racine courante, de sorte à vérifier, pour chaque objet courant, si l'objet courant est encore lié ou non à ladite racine par un lien de dépendance. 20 La table globale T peut être ainsi être vu comme le résultat d'une réunion d'une table de marquage propre au profil courant résultant de cette analyse de liens de dépendance, et de chaque table propre à un autre profil du dispositif, déjà présente en mémoire. L'analyse de liens de dépendance est par exemple mise en oeuvre de la même manière que dans la fonction ChangeProfile au moyen des étapes suivantes. 25 Toute donnée de marquage associée à un objet courant est initialisée à la valeur - non visité, non accessible » dans la table globale T. Par exception, toute donnée de marquages associée à une racine courante est initialisée à la valeur - non visité, accessible ». Une boucle de marquage identique à celle de la fonction ChangeProfile est mise en 30 oeuvre sur la base des données de marquage de la table de marquage globale T. Au cours d'une itération de la boucle de marquage, un objet dont la donnée de marquage a, dans la table globale T, comme valeur - non visité, accessible » est pris comme objet de référence. La valeur de la donnée de marquage associée à l'objet de référence est ajustée dans la 35 table globale T à la valeur - visité, accessible ». 3064773 12 Par ailleurs, la valeur de la donnée de marquage associée à chaque éventuel objet directement référencé par cet objet de référence est ajustée à la valeur - non visité, accessible ». De nouvelles itérations de la boucle sont mises en oeuvre jusqu'à qu'il n'y ait plus aucun 5 objet indiqué dans la table globale T comme étant - non visité, accessible ». Une fois la boucle terminée, tous les objets présents en mémoire sont marqués dans la table globale T comme ayant été visités. Au cours de cette boucle de marquage, les objets suivants sont marqués comme étant REVENDICATIONS1. Procédé de ramassage de miettes dans une mémoire (4) d'un dispositif (1), la mémoire contenant : - au moins un premier objet (P101, P102, P103) ayant été mémorisé dans la mémoire pendant qu'au moins un premier profil d'utilisateur (P1) du dispositif (1) était sélectivement actif, - au moins un premier jeu de données de marquage (Ti) indiquant, pour chaque premier objet, si le premier objet est à conserver ou à supprimer de la mémoire, - au moins un deuxième objet (P201, P202, P203) ayant été mémorisé dans la mémoire pendant qu'un deuxième profil d'utilisateur (P2) du dispositif (1) était sélectivement actif, le procédé comprenant au moins un cycle de ramassage mis en oeuvre pendant que le deuxième profil d'utilisateur du dispositif est sélectivement actif, le procédé étant caractérisé en ce que le cycle de ramassage comprend : - une phase de marquage restreinte aux deuxièmes objets (P201, P202, P203), le marquage comprenant la génération d'un deuxième jeu de données de marquage (T2) indiquant, pour chaque deuxième objet, si le deuxième objet est à conserver ou à supprimer de la mémoire, - une phase de nettoyage comprenant une suppression dans la mémoire (4) d'au moins un objet à condition que cet objet soit indiqué comme étant à supprimer dans au moins un des premier et deuxième jeux de données de marquage (Ti, T2). 2. Procédé selon ta revendication précédente, dans lequel les phases de nettoyage respectives de plusieurs cycles de ramassage mis en oeuvre successivement pendant que le deuxième profil d'utilisateur est sélectivement actif réutilisent les mêmes données de marquage mémorisées dans le premier jeu de données de marquage. 3. Procédé selon l'une des revendications précédentes, dans lequel le premier jeu de données de marquage (Ti) est généré lors de l'activation du deuxième profil d'utilisateur en Lieu et place du premier profil d'utilisateur. 4. Procédé selon l'une des revendications précédentes, dans lequel : 3064773 19 - chaque premier objet a été, lors de sa mémorisation, lié en mémoire par un lien de dépendance à une racine représentative d'une ressource persistante du dispositif propre au premier profil utilisateur (P1), dite première racine, - un premier objet a été marqué comme à conserver ou à supprimer de la mémoire 5 dans le premier jeu de données de marquage (Ti) selon que le premier objet a été trouvé ou non au cours d'une recherche des éventuels premiers objets liés par un lien de dépendance avec une première racine, ladite recherche ayant été mise en oeuvre uniquement à partir de chaque première racine de sorte à être restreinte aux premiers objets. 10 5. Procédé selon l'une des revendications précédentes, dans lequel le premier jeu de données de marquage (Ti) comprend, pour chaque premier objet, un unique bit de marquage dont la valeur indique site premier objet est à conserver ou à supprimer de la mémoire. 15 6. Procédé selon l'une des revendications précédentes, dans lequel : - chaque deuxième objet a été, lors de sa mémorisation, lié en mémoire par un tien de dépendance à une racine représentative d'une ressource persistante du dispositif propre au deuxième profil utilisateur (P2), dite deuxième racine, - la phase de marquage comprend une recherche des éventuels deuxièmes objets 20 encore liés par un lien de dépendance avec une deuxième racine, ladite recherche étant mise en oeuvre uniquement à partir de chaque deuxième racine de sorte à être restreinte aux deuxièmes objets, - un deuxième objet est marqué comme à conserver ou à supprimer de la mémoire dans te deuxième jeu de données de marquage (T2) selon que le deuxième objet a été 25 trouvé ou non au cours de la recherche. 7. Procédé selon la revendication précédente, dans lequel la recherche est mise en oeuvre selon la méthode des trois couleurs. 30 8. Procédé selon l'une des revendications précédentes, comprenant en outre une réunion du premier jeu de données de marquage (Ti) et du deuxième jeu de marquage (T2), de sorte à former un jeu de données de marquage global (T), et dans lequel la phase de nettoyage comprend une lecture du jeu de données de marquage global (T) et une suppression sélective dans la mémoire (4) d'au moins un objet indiqué comme étant à supprimer dans le jeu de données de marquage global (T) lu. 3064773 20 9. Procédé selon l'une des revendications précédentes, dans lequel le jeu de données global est mémorisé uniquement dans une mémoire volatile (6) du dispositif (1). 5 10. Ramasse-miettes comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications précédentes, lorsque ce procédé est exécuté par au moins un processeur (2). 11. Dispositif (1) dans lequel un profil d'utilisateur est sélectivement activable parmi 10 plusieurs profils d'utilisateurs, te dispositif (1) comprenant : - une mémoire (4) contenant : o au moins un premier objet ayant été mémorisé dans la mémoire pendant qu'au moins un premier profil d'utilisateur (P1) du dispositif (1) était actif, o un premier jeu de données de marquage indiquant, pour chaque premier 15 objet, site premier objet est à conserver ou à supprimer de la mémoire, o au moins un deuxième objet ayant été mémorisé dans la mémoire pendant qu'un deuxième profil d'utilisateur (P2) du dispositif (1) était sélectivement actif, - au moins un processeur (2) configuré pour mettre en oeuvre au moins un cycle de 20 ramassage pendant que le deuxième profil d'utilisateur du dispositif est sélectivement actif, le cycle de ramassage comprenant : o une phase de marquage restreinte aux deuxièmes objets (P201, P202, P203), le marquage comprenant la génération d'un deuxième jeu de données de marquage (T2) indiquant, pour chaque deuxième objet, site deuxième objet 25 est à conserver ou à supprimer de la mémoire, o une phase de nettoyage une suppression sélective dans la mémoire (4) d'au moins un objet indiqué comme étant à supprimer dans l'union du premier jeu de données de marquage (Ti) et du deuxième jeu de données de marquage (T2). 30