DE102004013180A1 - Garbage collection for smart cards - Google Patents
Garbage collection for smart cards Download PDFInfo
- Publication number
- DE102004013180A1 DE102004013180A1 DE200410013180 DE102004013180A DE102004013180A1 DE 102004013180 A1 DE102004013180 A1 DE 102004013180A1 DE 200410013180 DE200410013180 DE 200410013180 DE 102004013180 A DE102004013180 A DE 102004013180A DE 102004013180 A1 DE102004013180 A1 DE 102004013180A1
- Authority
- DE
- Germany
- Prior art keywords
- objects
- memory
- algorithm
- heap memory
- referenced
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/177—Smart card
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2143—Clearing memory, e.g. to prevent the data from being stolen
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System (AREA)
Abstract
Die Erfindung schafft ein Verfahren zum Durchsuchen von dynamisch zugewiesenem Heap-Speicher nach referenzierten oder nicht referenzierten Objekten, bei dem ein Durchsuchen des Heap-Speichers mittels eines Algorithmus durchgeführt wird, der ohne Rekursion arbeitet. Das Verfahren ist insbesondere bei der automatischen Speicherbereinigung (Garbage Collection) verwendbar. Für den rekursionfreien Algorithmus ist der Speicherbedarf, um den Algorithmus ausführen zu können, vor der Laufzeit ermittelbar. Daher ist das Verfahren besonders für Rechnersysteme mit begrenzten Speicherressourcen wie z. B. Smart Card geeignet. Angegeben wird auch ein entsprechender Datenträger, insbesondere Smart Card, z. B. Java Card, in dem das Verfahren implementiert ist.The invention provides a method of searching dynamically allocated heap memory for referenced or unreferenced objects, wherein a heap memory scan is performed using an algorithm that operates without recursion. The method is particularly useful in automatic garbage collection. For the recursion-free algorithm, the memory requirement for executing the algorithm can be determined before the runtime. Therefore, the method is particularly for computer systems with limited storage resources such. B. Smart Card suitable. Also indicated is a corresponding data carrier, in particular smart card, z. B. Java Card in which the method is implemented.
Description
Die Erfindung betrifft ein Verfahren zur automatischen Speicherbereinigung (Garbage Collection), insbesondere einen Tracing Collector, und ein dabei verwendetes Verfahren zum Durchsuchen von dynamisch zugewiesenem Heap-Speicher nach referenzierten oder nicht referenzierten Objekten, insbesondere für Rechnersysteme mit geringen Systemressourcen (Datenträger), wie z.B. Smart Cards (Chipkarten), sowie einen entsprechenden Datenträger.The The invention relates to a method for automatic garbage collection (Garbage Collection), in particular a Tracing Collector, and a method used to search dynamically allocated Heap memory for referenced or unreferenced objects, especially for Computer systems with low system resources (data carriers), such as e.g. Smart cards (chip cards), as well as a corresponding data carrier.
Ein Datenträger, insbesondere Smart Card, insbesondere Java Card, hat typischerweise einen Mikroprozessor, mehrere Speicher, z.B. ROM, EEPROM und RAM, wobei ROM und/oder EEPROM teilweise oder ganz durch Flash-Speicher ersetzt sein können, und ein oder mehrere Schnittstellen.One disk, In particular smart card, in particular Java Card, typically has a microprocessor, multiple memories, e.g. ROM, EEPROM and RAM, where ROM and / or EEPROM partially or entirely by flash memory can be replaced and one or more interfaces.
Ein auf einem Rechnersystem ablaufendes Programm (Computerprogramm) weist sich Arbeitsspeicher zu, d.h. allokiert Arbeitsspeicher, in welchem die einzelnen Programmcode-Befehle des Programms ausgeführt werden.One on a computer system running program (computer program) allocates memory, i. allocates memory, in which executes the program's individual program code instructions.
Der Arbeitsspeicher lässt sich in einen statisch zugewiesenen Speicher und einen dynamisch zugewiesenen Heap-Speicher unterteilen. Der statisch zugewiesene Speicher wird vor dem Ablaufen des Programms zugewiesen, z.B. während des Compilierens oder Linkens des Programms, wohingegen der dynamisch zugewiesene Heap-Speicher während der Laufzeit des Programms zugewiesen wird, d.h. während der Programmcode abläuft.Of the Memory leaves into a statically allocated memory and a dynamic one Divide allocated heap memory. The statically assigned Memory is allocated before the program expires, e.g. during the Compiling or linking the program, whereas the dynamic allocated heap memory while assigned to the duration of the program, i. while the program code expires.
Zum statisch zugewiesenen Speicher zählt – zumindest teilweise – der Stack-Speicher, auf dem z.B. Variablen beim Aufruf von Methoden (z.B. Algorithmen) angelegt werden. Solche Methoden können beispielsweise Methoden sein, die eine automatische Speicherbereinigung zum Gegenstand haben (siehe weiter unten).To the statically allocated memory counts - at least partly - the Stack memory, on the e.g. Variables when calling methods (e.g., algorithms) be created. Such methods can, for example, methods be, which have an automatic garbage collection to the object (see below).
Bei objektorientierten Programmiersprachen wie z.B. JavaTM von Sun Microsystems wird die dynamische Zuweisung von Arbeitsspeicher während der Laufzeit des Pro gramms in der Form durchgeführt, dass im Heap-Speicher (bei Java Cards i.d.R. im EEPROM oder ggf. Flash-Speicher) Objekte angelegt werden.Object-oriented programming languages, such as Java TM from Sun Microsystems, dynamically allocate memory during program runtime in such a way that objects are created in the heap memory (in the case of Java Cards usually in the EEPROM or possibly Flash memory).
Jedes Objekt kann ein oder mehrere Referenzen auf andere Objekte enthalten, die wiederum Referenzen auf andere Objekte haben können. Durch die Referenzen von Objekten auf andere Objekte haben die Objekte im Heap-Speicher untereinander eine baumartige Organisationsstruktur (Baumstruktur).each Object can contain one or more references to other objects, which in turn can have references to other objects. By the references of objects to other objects have the objects in the heap memory among each other a tree-like organization structure (Tree structure).
Eine
solche baumartige Organisationsstruktur, die auch Heap-Struktur
genannt wird, ist in
Die
Objekte, die vom Root-Objekt aus direkt referenziert sind, bilden
die Objekte der ersten Hierarchie-Ebene. Die von Objekten der ersten
Hierarchie-Ebene aus referenzierten Objekte bilden Objekte einer zweiten
Hierarchie-Ebene usw.. Jeder Zweig der Baumstruktur hat eine Tiefe,
die gleich der Anzahl Ebenen unter der nullten Hierarchie-Ebene
(Root-Ebene) in diesem Zweig ist. In
Unter
Bezugnahme auf
Nicht mehr verwendeter Heap-Speicher (dynamisch zugewiesener Arbeitsspeicher) muss wieder freigegeben (deallokiert) werden, damit für neue Objekte wieder Heap-Speicher zur Verfügung steht. Bei objektorientierten Programmiersprachen kann und soll also insbesondere der durch nicht referenzierte Objekte belegte Speicherplatz freigegeben werden, da diese Objekte ohnehin nicht mehr erreichbar sind und somit "Garbage" (Müll) sind.Not more used heap memory (dynamically allocated memory) must be released (deallocated) again for new objects again heap memory to disposal stands. Object-oriented programming languages can and should in particular the one occupied by non-referenced objects Space will be freed up because these objects are not are more accessible and thus "garbage" (garbage) are.
Eine Reihe von objektorientierten Programmiersprachen, beispielsweise Java, Smalltalk, Eiffel, Oberon, Perl, Python, Visual Basic und weitere, haben eine automatische Speicherbereinigung (Garbage Collection), bei der nicht referenzierte Objekte erkannt werden und der durch sie belegte dynamisch zugewiesene Heap-Speicher automatisch wieder freigegeben wird.A Series of object-oriented programming languages, for example Java, Smalltalk, Eiffel, Oberon, Perl, Python, Visual Basic and more, have automatic garbage collection, in which non-referenced objects are detected and by it automatically re-allocated dynamically allocated heap memory becomes.
Die einfachste Form der automatischen Speicherbereinigung ist die Reference Counting Garbage Collection oder der Reference Counting Collector, bei dem jedes Objekt einen Referenzzähler enthält. Der Zählerstand des Referenzzählers gibt an, wie viele Referenzen auf das Objekt gerichtet sind. Für jede erzeugte Referenz auf das Objekt wird der Zählerstand um eins hochgezählt, und für jede gelöschte Referenz auf das Objekt wird der Zählerstand um eins heruntergezählt. Objekte, deren Referenzzähler einen Zählerstand von Null hat, werden als Garbage eingestuft und gelöscht bzw. der von den Garbage-Objekten besetzte Speicherplatz wird dem frei verfügbaren Heap-Speicher zugewiesen.The The simplest form of automatic garbage collection is the Reference Counting Garbage Collection or the Reference Counting Collector, where each object contains a reference counter. The counter reading of the reference counter gives how many references are directed to the object. For every reference generated on the object is the count counted up by one, and for every one deleted Reference to the object, the count is counted down by one. objects their reference counter a meter reading has zero, are classified as garbage and deleted or The space occupied by the garbage objects becomes free available Allocated heap memory.
Neben Reference Counting Collectors gibt es die Tracing Collectors, bei denen Referenzen von der Root-Klasse (Wurzelklasse) des Heap-Speichers aus verfolgt ("getracet") werden.Next Reference Counting Collectors, there are the Tracing Collectors, at which references from the root class (root class) of the heap memory to be traced ("traced").
Bei den Speicherbereinigungen (Garbage Collections) vom Typ Tracing Collector bildet der Mark-and-Sweep Collector den grundlegenden Algorithmus. Beim Mark-and-Sweep Collector wird zuerst, in der sogenannten Mark-Phase, der Heap-Speicher nach Referenzen durchsucht, wobei Objekte, auf die keine Referenzen gefunden wurden, identifiziert und markiert werden. Die Suche nach Referenzen beginnt dabei am Root-Objekt des Heap-Speichers und arbeitet sich von dort aus hierarchisch durch den gesamten Heap-Speicher durch. Die in der Mark-Phase markierten Objekte werden in der nachfolgenden Sweep-Phase gelöscht.at the garbage collections of type Tracing Collector makes the mark-and-sweep collector the most fundamental Algorithm. At the mark-and-sweep Collector will first, in the so-called mark phase, the heap memory searches for references, taking objects to which no references were found, identified and marked. The search for References starts at the root object of the heap memory and works from there hierarchically through the entire heap memory by. The marked in the Mark phase objects are in the following Sweep phase cleared.
Bei zwei weiteren Formen von automatischer Speicherbereinigung (Garbage Collection) vom Typ Tracing Collector, den Compacting Collectors und den Copying Collectors, wird der Heap-Speicher bei der Speicherbereinigung zusätzlich defragmentiert.at two other forms of automatic garbage collection (garbage Collection) of type Tracing Collector, the Compacting Collectors and the Copying Collectors, the heap memory is at garbage collection additionally defragmented.
Sowohl Compacting Collectors als auch Copying Collectors beginnen mit einem Durchsuchen des Heap-Speichers nach Referenzen, nur dass hier nicht die nicht refe renzierten "toten" Objekte gesucht werden, sondern die "lebenden" Objekte, auf die noch Referenzen gerichtet sind (referenzierte Objekte).Either Compacting Collectors and Copying Collectors start with one Search the heap for references, except that not here the unreferenced "dead" objects sought but the "living" objects to which still references are directed (referenced objects).
Bei Compacting Collectors werden die gefundenen referenzierten Objekte ("lebenden" Objekte) zu einem Ende des Heap-Speichers hin verschoben und dort kompaktiert. Dadurch entsteht am entgegengesetzten Ende des Heap-Speichers ein großer zusammenhängender Speicherbereich. Anschließend werden alle Referenzen auf verschobene Objekte aktualisiert.at Compacting Collectors become the found referenced objects ("living" objects) to one Moved towards the end of the heap memory and compacted there. Thereby At the opposite end of the heap memory, a large coherent arises Storage area. Subsequently all references to moved objects are updated.
Bei Copying Collectors werden alle gefundenen referenzierten ("lebenden") Objekte von ihrem bisherigen alten Speicherbereich in einen neuen Speicherbereich kopiert und dabei lückenlos aneinandergefügt. Dadurch ist der neue Speicherbereich zusammenhängend, also defragmentiert. Der alte Speicherbereich wird als frei verfügbarer Speicherbereich deklariert.at Copying Collectors will find all referenced ("live") objects of theirs previous old storage area into a new storage area copied and without gaps joined. Thereby the new storage area is contiguous, that is defragmented. The old memory area is declared as a freely available memory area.
Bislang sind Verfahren zur automatischen Speicherbereinigung – mit Ausnahmen – überwiegend auf ausgedehnte Rechnersysteme beschränkt. Bei Rechnersystemen mit geringen Systemressourcen wie z.B. Smart Cards reicht häufig der Arbeitspeicher für eine automatische Speicherbereinigung nicht aus.So far, methods for automatic garbage collection - with exceptions - are mostly limited to large computer systems. For computer systems with low system resources such as Smart cards often do not provide enough memory for automatic garbage collection.
Bei
dem gängigen,
in
Im
Beispiel aus
Der Speicherbedarf für einen rekursiven Algorithmus wie den obenstehend beschriebenen, bei dem der Algorithmus innerhalb des Algorithmus immer wieder erneut aufgerufen wird, lässt sich nicht im Voraus ermitteln, wie nachfolgend dargelegt ist. Dies ist einer der Gründe, warum der herkömmliche rekursive Algorithmus in der Regel nicht ohne Weiteres auf ein Rechnersystem mit geringen Systemressourcen wie z.B. eine Smart Card übertragbar ist.Of the Storage requirements for a recursive algorithm like the one described above, where the algorithm is repeated again and again within the algorithm is called, lets do not determine in advance, as set out below. This is one of the reasons why the conventional one recursive algorithm usually does not readily work on a computer system with low system resources such as a smart card transferable is.
Jedes Objekt in einer Baumstruktur benötigt ein einzelnes Bit, also 1/8 Byte, für ein Flag, mit dem gekennzeichnet wird, ob das Objekt referenziert ist oder nicht. Eine Baumstruktur mit n Objekten benötigt somit n/8 Byte Speicher (statisch allozierten Arbeitsspeicher) für die Markierung der Objekte als referenziert oder nicht referenziert. Bei der Anwendung des Such- und Markier-Algorithmus auf einen Zweig der Baumstruktur wird für jeden Aufruf des Algorithmus und damit für jede Hierarchie-Ebene eine Anzahl von v Bytes für lokale Variablen verwendet. Für einen Zweig der Tiefe d' wird daher ein Anzahl von d'·v Bytes an Speicher für Variablen benötigt. Zu berücksichtigen ist hierbei, dass die Variablen eines bereits vollständig durchsuchten Zweigs wieder überschrieben werden können, wenn der nächste Zweig der Baumstruktur durchsucht wird, da die einzelnen Objekte des durchsuchten Zweig ja bereits als referenziert oder nicht referenziert markiert sind. Relevant für den Speicherbedarf für Variablen ist somit die Tiefe des Zweigs der Baumstruktur mit der maximalen Tiefe d.each Object needed in a tree structure a single bit, ie 1/8 byte, for a flag marked with whether the object is referenced or not. A tree structure needed with n objects thus n / 8 bytes of memory (statically allocated RAM) for the tag of the objects as referenced or not referenced. In the application of the search and mark algorithm becomes a branch of the tree structure for each Call the algorithm and thus for each hierarchy level a number from v bytes for used local variables. For becomes a branch of the depth d ' hence a number of d '· v bytes at memory for Variables needed. To be considered Here is that the variables of an already fully searched branch overwritten again can be if the next one Branch of the tree is searched as the individual objects the searched branch already referenced or not referenced are marked. Relevant for the memory requirement for Variables is thus the depth of the branch of the tree structure with the maximum depth d.
Sei
also für
eine Baumstruktur wie die in
- n:
- = Anzahl der Objekte in der Baumstruktur
- d:
- = maximale Tiefe der Baumstruktur
- v:
- = Anzahl von Bytes, die bei dem Algorithmus für lokale Variablen verwendet werden (konstant pro Algorithmus-Aufruf)
- rc:
- = Speicherbedarf in Byte.
- n:
- = Number of objects in the tree structure
- d:
- = maximum depth of the tree structure
- v:
- = Number of bytes used in the local variable algorithm (constant per algorithm call)
- rc:
- = Memory required in bytes.
Dann
gilt für
den Speicherbedarf rc des Algorithmus in Byte,
Der Speicherbedarf des rekursiven Such- und Markier-Algorithmus hängt also von der maximalen Tiefe der Baumstruktur ab, die noch unbekannt ist, solange die Baumstruktur nicht vollständig durchsucht worden ist. Folglich lässt sich der Speicherbedarf des herkömmlichen rekursiven Such- und Markier-Algorithmus, der z.B. bei der herkömmlichen Mark-and-Sweep Garbage Collection verwendet wird, nicht im Voraus, vor dem Durchsuchen der Baumstruktur und damit vor der Laufzeit des Algorithmus, ermitteln.Of the Memory requirement of the recursive search and mark algorithm depends thus from the maximum depth of the tree, which is still unknown is as long as the tree structure has not been completely searched. Consequently lets the memory requirements of the conventional recursive search and mark algorithm, e.g. in the conventional Mark-and-sweep garbage collection is used, not in advance, before searching the tree structure and thus before the runtime of the algorithm.
Bei Rechnersystemen mit großzügig bemessenen Systemressourcen (Speicher und/oder Rechenleistung) wie z.B. PCs, Workstations oder Servern wird einem rekursiven Such- und Markier-Algorithmus im Zweifelsfall überreichlich Arbeitsspeicher, insbesondere Stack-Speicher, zugewiesen.at Computer systems with generously sized System resources (memory and / or computational power) such as e.g. PCs, Workstations or servers use a recursive search and mark algorithm in doubt, over-abundant Memory, especially stack memory allocated.
Vor allem für Rechnersysteme mit geringen Systemressourcen, wie z.B. Smart Cards, reicht der insgesamt verfügbare Speicher unter Umständen nicht aus, um im Zweifelsfall überreichlich Arbeitsspeicher zuzuweisen. Daher ist es wünschenswert, den Speicherbedarf eines Algorithmus für die automatische Speicherbereinigung im Voraus zu kennen, um zu ermitteln, ob der Algorithmus auf dem Rechnersystem überhaupt lauffähig ist, d.h. ausgeführt werden kann, und um zu verhindern, dass der Arbeitsspeicher überläuft und in Folge beim Ausführen des Algorithmus Fehler im Programmablauf auftreten.In front everything for Computer systems with low system resources, e.g. Smart Cards, the total available Memory may be not enough to be overflowing in case of doubt Allocate memory. Therefore it is desirable to have the memory required an algorithm for to know in advance the automatic garbage collection to determine whether the algorithm is executable on the computer system at all, i.e. accomplished and to prevent the memory from overflowing and in a row when running of the algorithm errors occur in the program flow.
Ausgehend hiervon liegt der Erfindung die Aufgabe zu Grunde, ein Verfahren zur automatischen Speicherbereinigung (Garbage Collection) und ein dabei verwendetes Verfahren zum Durchsuchen von dynamisch zugewiesenem Heap-Speicher nach referenzierten oder nicht referenzierten Objekten zu schaffen, bei dem der Speicherbedarf (Bedarf an Arbeitsspeicher) für die Durchführung der Speicherbereinigung im Voraus, vor der Ausführung des Verfahrens, ermittelbar ist.outgoing From this, the invention is based on the object, a method for automatic garbage collection and on method used thereby to search dynamically allocated Heap memory for referenced or unreferenced objects to create in which the memory requirement (memory requirement) for the execution the garbage collection in advance, before the execution of the method, determined is.
Die Aufgabe wird gelöst durch ein Verfahren nach dem unabhängigen Verfahrensanspruch. Vorteilhafte Ausgestaltungen der Erfindung sind in den abhängigen Ansprüchen angegeben.The Task is solved by a method according to the independent method claim. Advantageous embodiments of the invention are specified in the dependent claims.
Bei dem erfindungsgemäßen Verfahren gemäß Anspruch 1 sind in dynamisch zugewiesenem Heap-Speicher Objekte angelegt. Nicht mehr erreichbare Objekte auf dem Heap-Speicher sollen mittels des erfindungsgemäßen Verfahrens gefunden werden, das hierzu den Heap-Speicher systematisch durchsucht. Gemäß dem unabhängigen Anspruch 1 wird das Durchsuchen des Heap-Speichers mittels eines Algorithmus durchgeführt, der ohne Rekursion arbeitet.at the method according to the invention according to claim 1 objects are created in dynamically allocated heap memory. Unreachable objects on the heap memory are meant to be the method according to the invention which systematically searches the heap memory for this purpose. According to the independent claim 1, the search of the heap memory is performed by means of an algorithm which works without recursion.
Dadurch, dass keine Rekursion durchgeführt wird, wird der Algorithmus nur ein einziges Mal aufgerufen, ohne dass er innerhalb des Algorithmus geschachtelt erneut aufgerufen wird. Die Anzahl v Bytes, die der Algorithmus für lokale Variablen benötigt, wird im Voraus nach Bedarf festgelegt und ist folglich bereits vor dem Aufrufen des Algorithmus bekannt. Da der Algorithmus nur ein einziges Mal aufgerufen wird, benötigt der Algorithmus für lokale Variablen insgesamt eine Anzahl von nur genau ein Mal v Bytes (statt maximale Tiefe der Baumstruktur Mal v Bytes beim herkömmlichen rekursiven Verfahren). Daher ist bei dem erfindungsgemäßen Verfahren der Speicherbedarf zur Ausführung des Algorithmus im Voraus bekannt.Thereby, that no recursion was performed is, the algorithm is called only once, without that he nested within the algorithm called again becomes. The number of bytes required by the local variable algorithm becomes set in advance as needed and is therefore already before calling the algorithm known. Because the algorithm only once is called, needed the algorithm for local variables total a number of only exactly one time v bytes (instead of maximum tree depth times v bytes in the conventional recursive procedure). Therefore, in the method according to the invention the memory required to run the algorithm known in advance.
Daher ist gemäß Anspruch 1 ein Verfahren geschaffen, bei dem der Speicherbedarf (Bedarf an Arbeitsspeicher), insbesondere der Bedarf an statisch zugewiesenem oder zuzuweisendem Speicher (Arbeitsspeicher) für das Verfahren, im Voraus, vor der Ausführung des Verfahrens, ermittelbar ist, was speziell für Systeme mit begrenzten Speicherressourcen, wie z.B. Smart Cards, sehr vorteilhaft ist.Therefore is according to claim 1 provides a method in which the memory requirement (demand for Memory), in particular the need for statically assigned or allocate memory (memory) for the procedure, in advance, before the execution the process, which is specific to systems with limited storage resources, such as. Smart Cards, is very beneficial.
Mittels des Algorithmus gefundene referenzierte Objekte werden vorzugsweise markiert, damit in einem nachfolgenden Schritt die übrig gebliebenen nicht referenzierten Objekte gelöscht werden können, z.B. indem der von den nicht referenzierten Objekten belegte Speicherplatz als frei verfügbarer Heap-Speicherplatz deklariert wird. Das Löschen der nicht referenzierten Objekte bzw. Freigeben des durch sie belegten Speichers kann in einem Sweep-Schritt wie beim Mark-and-Sweep Verfahren erfolgen. Alternativ können die gefundenen referenzierten Objekte gerettet werden, wie beim Compacting Collector oder beim Copying Collector, und der übrig bleibende Speicher als frei verfügbarer Heap-Speicher deklariert werden. Wahlweise wird der Speicher bei der Speicherbereinigung zusätzlich defragmentiert.through The referenced objects found in the algorithm preferably become marked, so that in a subsequent step the left over not referenced objects deleted can be e.g. by taking up the space occupied by the unreferenced objects as freely available Heap space is declared. Deleting the unreferenced ones Objects or releasing the memory occupied by them can in a sweep step as in the mark-and-sweep method. Alternatively you can the found referenced objects are saved, as with the Compacting Collector or Copying Collector, and the remainder Memory as freely available Heap memory to be declared. Optionally, the memory is added the garbage collection in addition defragmented.
Vorzugsweise ist jedem Objekt ein eindeutiger Objektindex zugewiesen, wobei durch die Objektindizes aller Objekte des Heap-Speichers eine eindeutige Reihenfolge der Objekte festgelegt ist. Gemäß dem Algorithmus werden die Objekte des Heap-Speichers in der Reihenfolge ihrer Objektindizes abgesucht, unabhängig von einer ggf. zu Grunde liegenden Heap-Struktur. Der Objektindex kann z.B. eine Zahl oder ein Alphabetbuchstabe oder eine lineare Adresse sein oder ein sonstiger Index, der mit weiteren Zahlen, Alphabetbuchstaben etc. eine eindeutige Reihenfolge bildet.Preferably each object is assigned a unique object index, by the object indexes of all heap memory objects are unique Order of objects is set. According to the algorithm, the Objects of the heap memory scanned in the order of their object indexes, regardless of a possibly underlying heap structure. The object index can e.g. a number or an alphabetical letter or a linear address his or another index, with further numbers, alphabet letters etc. forms a unique order.
Vorzugsweise sind die Objekte in dem Heap-Speicher nummeriert und werden in der Reihenfolge ihrer Nummerierung abgesucht. Durch die Nummerierung ist jedem Objekt ein eindeutiger Objektindex zugewiesen, mit dem das Objekt eindeutig adressierbar ist. Zusätzlich hat jeder Objektindex einen eindeutigen Nachfolger, so dass durch die Objektindizes aller Objekte der Heap-Struktur eine eindeutige Reihenfolge der Objekte festgelegt ist.Preferably the objects are numbered in the heap memory and are in the Scanned order of their numbering. By the numbering Each object has a unique object index assigned to it the object is uniquely addressable. In addition, every object index has a unique successor, so that through the object indexes of all Objects of the heap structure have a unique order of objects is fixed.
Beim Algorithmus mit Objekten mit Objektindex bzw. Nummerierung wird das Durchsuchen des Heap-Speichers streng nach dem Objektindex bzw. der Nummerierung der Objekte durchgeführt, unabhängig davon, ob ein Zweig der Heap-Struktur bis zum Ende durchsucht ist oder nicht. Beim üblicherweise verwendeten herkömmlichen Algorithmus wird dagegen das Durchsuchen des Heap-Speichers in jedem Zweig der Heap-Struktur, gemäß der der Heap-Speicher organisiert ist, bis zum Ende des jeweiligen Zweigs durchgeführt, bevor mit dem Durchsuchen des nächsten Zweiges begonnen wird, unabhängig von einer Nummerierung bzw. Indizierung der einzelnen Objekte.For the algorithm with objects with object index or numbering, the search of the He ap memory is performed strictly according to the object index or numbering of the objects, regardless of whether a branch of the heap structure is searched to the end or not. In contrast, in the conventional algorithm conventionally used, searching the heap memory in each branch of the heap structure according to which the heap memory is organized is performed until the end of the respective branch before starting to search the next branch, regardless of a numbering or indexing of the individual objects.
Sofern
der Heap-Speicher frei von Rückwärtsreferenzen
ist – oder
mit anderen Worten sofern der Heap-Speicher streng vorwärtsgerichtet
ist –,
genügt
es, den Speicher ein einziges Mal in der Reihenfolge der Objektindizes
bzw. der Nummerierung der Objekte zu durchsuchen, vorzugsweise beginnend
beim als Start-Objekt verwendeten Root-Objekt, bei einer Ausführungsform
wie der in
Alternativ wird ein Heap-Speicher, der bezüglich der Objektindizes bzw. Nummerierung vorwärtsgerichtet ist, gemäß dem Algorithmus genau zwei Mal durchsucht, wobei das zweite Mal des Durchsuchens zur Überprüfung durchgeführt wird, dass der Algorithmus beendet werden kann.alternative becomes a heap store that re the object indexes are forwarded according to the algorithm searched twice, the second time browsing being carried out for verification, that the algorithm can be terminated.
Sofern der Heap-Speicher eine oder mehrere Rückwärtsreferenzen aufweist, d.h. falls der Heap-Speicher bezüglich der Objektindizes bzw. Nummerierung seiner Objekte mindestens ein Paar von referenzierendem Objekt (i) und referenzierten Objekt (i+1) aufweist, die zueinander eine Rückwärtsreferenz (rückwärtsgerichtete Referenz-Beziehung) haben, wird vorzugsweise der Heap-Speicher mindestens zwei Mal durchsucht.Provided the heap memory has one or more backward references, i. if the heap memory is relative the object indexes or numbering of its objects at least one Pair of referencing object (i) and referenced object (i + 1) which are mutually a backward reference (Backward Reference relationship) preferably the heap memory is searched at least twice.
Vorzugsweise wird der Heap-Speicher im Fall, dass er mindestens eine Rückwärtsreferenz hat, hintereinander mindestens ein Mal vorwärts und ein Mal rückwärts durchsucht.Preferably the heap memory is in case he has at least one backward reference has searched one after the other at least once forward and once backwards.
Alternativ wird ein Heap-Speicher, der bezüglich der Objektindizes bzw. Nummerierung seiner Objekte mindestens ein Paar von referenzierendem Objekt ((i)) und referenzierten Objekt ((i+1)) aufweist, die zueinander eine Rückwärtsreferenz haben, mindestens drei Mal durchsucht, wobei das letzte Mal (z.B. das dritte Mal) des Durchsuchens zur Überprüfung durchgeführt wird, dass der Algorithmus beendet werden kann.alternative becomes a heap store that re the object indexes or numbering of its objects at least one Pair of referencing object ((i)) and referenced object ((i + 1)) having a backward reference to each other, at least searched three times, the last time (e.g., the third time) of the Searching for verification is performed that the algorithm can be terminated.
Jedes mittels des Algorithmus gefundene referenzierte aktuelle Objekt (aktuelles Objekt im Unterschied zu Objekten, die durch dieses aktuelle Objekt referenziert sind) wird vorzugsweise markiert. Dabei ist es weiter bevorzugt, dass das Verfahren beendet wird, sobald ein Durchlauf des Durchsuchens des gesamten Heap-Speichers durchgeführt worden ist, bei dem keine Markierung vorgenommen worden ist. Wahlweise wird nach einem Durchlauf, bei dem keine Markierung vorgenommen worden ist, ein nochmaliger Durchlauf des Durchsuchens als Prüfdurchlauf vorgenommen, um zu überprüfen, ob tatsächlich keine Markierungen mehr vorzunehmen sind. In beiden Fällen wird mit anderen Worten daran, dass, ein Leerlauf durchgeführt worden ist, bei dem keine Markierungen vorgenommen worden sind, erkannt, dass das Verfahren beendet werden kann. Bei einem streng vorwärts gerichteten Heap-Speicher ist der nochmalige Durchlauf, d.h. der Prüfdurchlauf, vorzugsweise der zweite Durchlauf. Bei einem Heap-Speicher mit mindestens einer Rückwärtsreferenz ist der nochmalige Durchlauf, d.h. der Prüfdurchlauf beispielsweise der dritte Durchlauf des Durchsuchens des Heap-Speichers, allgemeiner der letzte Durchlauf. Dabei wird der Heap-Speicher je nach Bedarf mehrmals abwechselnd vorwärts und rückwärts durchsucht. Bei jedem Durchsuchen wird der Algorithmus nur ein einziges Mal aufgerufen, so dass der Speicherbedarf (Bedarf an statisch zugewiesenem Arbeitsspeicher, insbesondere Stack-Speicher) für den Algorithmus im Voraus ermittelbar ist. Bei jedem erneuten Durchlauf des Durchsuchens kann der Speicherplatz, den der Algorithmus beim vorangehenden Durchlauf belegt hat, wieder überschrieben werden. Daher erhöht sich der Speicherbedarf nicht mit der Anzahl von durchgeführten Durchläufen des Durchsuchens des Speichers. Insbesondere führen Rückwärtsreferenzen im Heap-Speicher, die ein mehrmaliges Durchsuchen des Heap-Speichers, abwechselnd vorwärts und rückwärts, erforderlich machen, nicht zu einer Erhöhung des Speicherbedarfs.each referenced current object found by the algorithm (current object, unlike objects, by this current Object referenced) is preferably marked. That's it more preferably that the process is terminated once a run searching the entire heap memory is where no marking has been made. Optional will be after a pass in which no mark is made a re-run browsing pass as a scan pass made to check if indeed no markings are to be made. In both cases will in other words, that, an idle has been done in which no markings have been made, recognized that the procedure can be ended. In a strictly forward direction Heap memory is the re-run, i. the test run, preferably the second Run. For a heap memory with at least one backward reference the re-run, i. the test run, for example, the third pass of heap memory scanning, more common the last pass. Thereby the heap memory becomes according to need several times forward alternately and searched backwards. Each time you search, the algorithm will only be used once called, so the memory requirements (need for statically assigned Memory, especially stack memory) for the algorithm in advance can be determined. Each re-run of the search can the space the algorithm used in the previous run has occupied, again overwritten become. Therefore increased the memory requirement does not match the number of passes made by the Searching the store. In particular, backward references in heap memory, a multiple search of the heap memory, alternating forward and backwards, required do not make an increase the memory requirement.
Weiter vorzugsweise wird das Markieren eines Objekts jeweils unter Verwendung eines in einem Speicher vorgesehenen Markierungsfeldes durchgeführt, das beispielsweise eine vorbestimmte Anzahl von Bits oder Bytes in einem Speicher benutzt, der für den Algorithmus zugänglich ist, z.B. im statisch zugewiesenem Stack-Speicher.Further Preferably, the marking of an object is in each case using carried out in a memory provided marking field, the for example, a predetermined number of bits or bytes in one Memory used for the algorithm accessible is, e.g. in the statically allocated stack memory.
Gemäß einer bevorzugten Ausführungsform weist das Markierungsfeld für das aktuelle Objekt ein erstes Datenfeld und ein zweites Datenfeld auf, wobei das erste Datenfeld (valid) markiert wird, falls das aktuelle (gefundene) Objekt referenziert ist, und wobei das zweite Datenfeld (scanned) markiert wird, falls alle von dem aktuellen Objekt ausgehenden referenzierten Objekte dadurch als referenziert markiert sind, dass bei diesen referenzierten Objekten das erste Datenfeld (valid) markiert ist. Jedes Datenfeld kann z.B. als ein Flag ausgebildet sein. Das Flag wird zum Markieren des Objekts geschaltet, also je nach Implementierung gesetzt oder gelöscht.According to one preferred embodiment has the check box for the current object a first data field and a second data field on, where the first data field (valid) is marked, if that current (found) object is referenced, and where the second Data field (scanned) is marked, if all of the current one Object outbound referenced objects thereby referenced are marked, that with these referenced objects the first Data field (valid) is marked. Each data field can e.g. as a Flag be formed. The flag is switched to mark the object, So depending on the implementation set or deleted.
Das
Markierungsfeld gemäß der Erfindung
ist vorzugsweise, anders als bei herkömmlichen Verfahren zum Durchsuchen
eines Heap-Speichers, im RAM (Random Access Memory) vorgesehen.
Bei herkömmlichen Verfahren
zum Durchsuchen eines Heap-Speichers wird, um ein Objekt als referenziert
zu markieren, ein Flag im Header des Objekts gesetzt (geschaltet),
wie durch
Weiter vorzugsweise werden mittels des Algorithmus gefundene Objekte, auf die keine oder noch keine Referenz gefunden wurde, nicht markiert. Der Algorithmus übergeht jedes solche Objekt einfach, ggf. bis er bei einem erneuten Such-Durchlauf erneut auf das Objekt trifft.Further Preferably, objects found by the algorithm are found which no or no reference was found, not marked. The algorithm overrides Any such object is easy, if necessary, until it re-searches again hits the object.
Das Verfahren wird vorzugsweise in einem Datenträger wie einer Smart Card, insbesondere einer Java Card, oder einem beliebig geformten Token verwendet oder in einem Chipmodul zum Einbau in einen Datenträger oder sonstigen Gegenstand bzw. in einem Chip zum Einbau in ein Chipmodul oder einen Datenträger etc. Der Datenträger bzw. das Chipmodul bzw. der Chip weist vorzugsweise einen Mikroprozessor und mehrere Speicher (ROM, EEPROM, RAM, ggf. Flash) auf. Der Algorithmus ist vorzugsweise im ROM; ggf. alternativ in einem Flash-Speicher, implementiert. Dem Algorithmus ist vorzugsweise ein Arbeitsspeicher, insbesondere ein Stack-Speicher im RAM des Datenträgers, statisch zugewiesenen, dessen erforderliche Größe sich bei dem erfindungsgemäßen Verfahren vor der Laufzeit berechnen lässt. Das Markierungsfeld ist vorzugsweise im RAM implementiert, vorzugsweise im Stack-Speicher.The Method is preferably used in a data carrier such as a smart card, in particular a Java Card, or an arbitrarily shaped token used or in a chip module for installation in a data carrier or other object or in a chip for installation in a chip module or a data carrier, etc. The disk or the chip module or the chip preferably has a microprocessor and several memories (ROM, EEPROM, RAM, possibly Flash). The algorithm is preferably in ROM; if necessary alternatively in a flash memory, implemented. The algorithm is preferably a working memory, in particular a stack memory in the RAM of the disk, static assigned, the required size in the inventive method calculates before the runtime. The checkbox is preferably implemented in RAM, preferably in the stack memory.
Im Folgenden wird die Erfindung anhand von Ausführungsbeispielen und unter Bezugnahme auf die Zeichnung näher erläutert, in der zeigen:in the The following is the invention with reference to embodiments and below Reference to the drawing closer explains in the show:
Der
Heap-Speicher weist
Beim Algorithmus gemäß der bevorzugten Ausführungsform, bei dem die Objekte in der Reihenfolge ihrer Nummerierung abgesucht werden, lässt sich der Speicherbedarf vor Ablauf des Algorithmus ermitteln, wie nachfolgend gezeigt ist.At the Algorithm according to the preferred embodiment, in which the objects are searched in the order of their numbering be, lets to determine the memory requirements before the algorithm expires, such as shown below.
Sei
also für
eine Baumstruktur wie die in
- n:
- = Anzahl der Objekte in der Baumstruktur
- v:
- = Anzahl von Bytes, die bei dem Algorithmus für lokale Variablen verwendet werden (konstant pro Algorithmus-Aufruf)
- rc:
- = Speicherbedarf in Byte.
- n:
- = Number of objects in the tree structure
- v:
- = Number of bytes used in the local variable algorithm (constant per algorithm call)
- rc:
- = Memory required in bytes.
Dann
gilt für
den Speicherbedarf rc des bevorzugten erfindungsgemäßen Algorithmus
in Byte,
Dabei gibt der Term (2·n + 8) die Anzahl Bits (1/8 Bytes) an, die für die „valid"- und „scanned"-Datenfelder (valid-Flags und scanned-Flags) für die n Objekte der Heap-Struktur erforderlich sind. Der Term v gibt den Speicherbedarf in Bytes für lokale Variablen an und erscheint nur ein einziges Mal, da der Algorithmus pro Durchlauf des Durchsuchens des Heap-Speichers nur ein einziges Mal aufgerufen wird.there is the term (2 · n + 8) the number of bits (1/8 bytes) required for the "valid" and "scanned" data fields (valid flags and scanned flags) for the n objects of the heap structure are required. The term v gives the Memory required in bytes for local variables and only appears once, given the algorithm only one single pass per pass of heap memory scanning Time is called.
Aus
Gleichung (2) lässt
sich die Höchstzahl
nmax von Objekten im Voraus ermitteln, die
sich in einem Speicher der Größe rc unterbringen
lassen:
Nachfolgend
ist ein beispielhafter rekursionsfreier Algorithmus 1 angeführt, in
dem das erfindungsgemäße Verfahren
zum Durchsuchen eines Heap-Speichers und zum Markieren gefundener
referenzierter Objekte implementiert ist. Sei n die Anzahl von Objekten
im Heap-Speicher. Sei zudem eine Objektliste angelegt, in der zu
jedem Objekt ein Markierungsfeld (schematisch in
(Algorithmus 1)(Algorithm 1)
Bei
dem vorangehenden Algorithmus 1 sind die beiden Datenfelder des
Markierungsfeldes als ein valid-Flag und ein scanned-Flag ausgeführt (vgl.
Das Root-Objekt (i=1) gilt in jedem Fall als referenziert und wird zu Beginn als valid gesetzt. Wahlweise kann es mehrere Root-Objekte geben. In diesem Fall werden zu Beginn alle Root-Objekte als valid gesetzt.The Root object (i = 1) is always referenced and becomes Start set as valid. Optionally, it can have multiple root objects give. In this case, all root objects are considered valid at the beginning set.
Anschließend werden, in der „j"-Schleife, alle durch das Root-Objekt referenzierten Objekte als valid gesetzt, um zu markieren, dass diese Objekte referenziert sind.Subsequently, in the "j" loop, all through the root object referenced objects are set as valid to mark that these objects are referenced.
Nachfolgend wird das scanned-Flag des Root-Objekts (i=1) gesetzt, um zu markieren, dass alle vom Root-Objekt ausgehenden Referenzen abgescannt (abgesucht) worden sind.following set the scanned flag of the root object (i = 1) to mark that all references originating from the root object are scanned (scanned) have been.
Nun
schreitet der Algorithmus 1 vom Root-Objekt (i=1, d.h. Objektindex
Das
Verfahren wird bis zum letzten Objekt des Heaps (bei
Beim
Beispiel aus
Objekte
in der Heap-Struktur, bei denen Rückwärtsreferenzen vorliegen, können dadurch überprüft werden,
dass der Heap-Speicher so oft wie erforderlich abwechselnd vorwärts (bei
Während
(Algorithmus 2)(Algorithm 2)
Algorithmus
2 umfasst einen Vorwärts-Durchlauf
(Vorwärts-Scan)
durch den Heap-Speicher,
der im Wesentlichen dem von Algorithmus 1 entspricht, und einen
Rückwärts-Durchlauf
(Rückwärts-Scan).
Beim Rückwärts-Durchlauf
von Algorithmus 2 sind insbesondere für die Objekte
Bei
einem nachfolgend angegebenen bevorzugten Algorithmus 3 wird zusätzlich ein
binäres
drittes Datenfeld „End-Flag" verwendet, das geschaltet
wird, sobald ein Durchlauf des Durchsuchens des Heap-Speichers vorgenommen
worden ist, bei dem keine Markierung vorgenommen worden ist. Nach
Durchlauf des Algorithmus 3 hat die Objektliste die in
(Algorithmus 3)(Algorithm 3)
Der vorstehende Algorithmus 3 durchsucht den Heap-Speicher so oft abwechselnd vorwärts und rückwärts, bis ein Durchlauf (Scan) des Durchsuchens des Heap-Speichers vorgenommen worden ist, bei dem keine Markierung vorgenommen worden ist. Dies wird durch die (do, while)-Schleife verwirklicht, die als Bedingung für das Weitermachen hat, dass das End-Flag auf den booleschen Wert „false" geschaltet ist. Erst wenn in einem Durchlauf keine Markierung (valid-Flag) vorgenommen worden ist, bleibt das End-Flag auf den booleschen Wert „true" gesetzt und die (do, while)-Schleife und damit der Algorithmus wird beendet.Of the The above Algorithm 3 searches the heap memory alternately many times forward and backwards, until a sweep (scan) of the heap memory scan has been made no marking has been made. This is done by the (do, while) loop realized as a condition for continuing has the end flag set to boolean false Pass no mark (valid flag) has been made the end flag remains set to the true Boolean value and the (do, while) loop and thus the algorithm is terminated.
Mit
dem Verfahren, das durch den Algorithmus 3 implementiert ist, lassen
sich somit für
einen Heap-Speicher, dessen Heap-Struktur Rückwärtsreferenzen hat, sämtliche
(noch) referenzierten Objekte finden. Gemäß
Claims (19)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE200410013180 DE102004013180A1 (en) | 2004-03-17 | 2004-03-17 | Garbage collection for smart cards |
EP05715929A EP1728162A1 (en) | 2004-03-17 | 2005-03-10 | Garbage collection for smart cards |
PCT/EP2005/002552 WO2005093580A1 (en) | 2004-03-17 | 2005-03-10 | Garbage collection for smart cards |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE200410013180 DE102004013180A1 (en) | 2004-03-17 | 2004-03-17 | Garbage collection for smart cards |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102004013180A1 true DE102004013180A1 (en) | 2005-10-06 |
Family
ID=34961409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE200410013180 Ceased DE102004013180A1 (en) | 2004-03-17 | 2004-03-17 | Garbage collection for smart cards |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1728162A1 (en) |
DE (1) | DE102004013180A1 (en) |
WO (1) | WO2005093580A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2275915A1 (en) * | 2009-06-30 | 2011-01-19 | Incard SA | Method to defrag a memory of an IC Card |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279097B (en) * | 2014-07-07 | 2019-06-18 | 北京数码视讯科技股份有限公司 | A kind of management method, equipment and smart card calling transient object |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0433489A1 (en) * | 1989-12-22 | 1991-06-26 | Siemens Aktiengesellschaft | Method to purge a memory of objects, which are no longer accessible during program run |
DE69102065T2 (en) * | 1990-08-02 | 1994-09-01 | Carlstedt Elektronik Ab | AN ARITHMETIC UNIT FOR STRUCTURAL ARITHMETICS. |
DE19918610A1 (en) * | 1998-04-25 | 2000-10-26 | Wolfgang Hilberg | Correlation circuitry with shift register and sign bit inversion circuitry set according to Fibonacci series |
DE60000301T2 (en) * | 1999-02-25 | 2003-01-30 | Siemens Energy & Automat | METHOD, DEVICE, AND PRODUCED OBJECT FOR LEGS |
DE69332696T2 (en) * | 1992-06-15 | 2003-08-21 | Microsoft Corp | Computer method and system for memory management |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9907278D0 (en) * | 1999-03-31 | 1999-05-26 | Philips Electronics Nv | Memory reclamation method and apparatus |
-
2004
- 2004-03-17 DE DE200410013180 patent/DE102004013180A1/en not_active Ceased
-
2005
- 2005-03-10 EP EP05715929A patent/EP1728162A1/en not_active Withdrawn
- 2005-03-10 WO PCT/EP2005/002552 patent/WO2005093580A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0433489A1 (en) * | 1989-12-22 | 1991-06-26 | Siemens Aktiengesellschaft | Method to purge a memory of objects, which are no longer accessible during program run |
DE69102065T2 (en) * | 1990-08-02 | 1994-09-01 | Carlstedt Elektronik Ab | AN ARITHMETIC UNIT FOR STRUCTURAL ARITHMETICS. |
DE69332696T2 (en) * | 1992-06-15 | 2003-08-21 | Microsoft Corp | Computer method and system for memory management |
DE19918610A1 (en) * | 1998-04-25 | 2000-10-26 | Wolfgang Hilberg | Correlation circuitry with shift register and sign bit inversion circuitry set according to Fibonacci series |
DE60000301T2 (en) * | 1999-02-25 | 2003-01-30 | Siemens Energy & Automat | METHOD, DEVICE, AND PRODUCED OBJECT FOR LEGS |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2275915A1 (en) * | 2009-06-30 | 2011-01-19 | Incard SA | Method to defrag a memory of an IC Card |
Also Published As
Publication number | Publication date |
---|---|
WO2005093580A1 (en) | 2005-10-06 |
EP1728162A1 (en) | 2006-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69932874T2 (en) | Method and computer system for dynamic generation management of computer memory | |
DE60032685T2 (en) | MEMORY RECOVERY PROCESS | |
DE60032694T2 (en) | MEMORY RECOVERY PROCESS | |
DE69923657T2 (en) | MARKING OF STORED DATA OBJECTS FOR GARBAGE COLLECTORS | |
DE19743267C1 (en) | Address localization in partially occupied, unbalanced binary tree | |
DE69636761T2 (en) | SAVING AND RE-RELEASING ORDERED KEY QUANTITIES IN A COMPACT 0-COMPLETE TREE | |
DE2131066C3 (en) | Arrangement for addressing a table memory | |
DE69738101T2 (en) | Management of access to objects using three-state references | |
DE19743266C1 (en) | Address management method in binary search tree | |
DE19959758A1 (en) | Establishment method for type and accuracy of local variables for computer sub routines, | |
DE1499182B2 (en) | Data storage system | |
EP1183690A1 (en) | Memory array with address scrambling | |
DE2218839A1 (en) | PROCEDURE AND DEVICE FOR ALLOCATING MEMORY ADDRESSES TO DATA ELEMENTS | |
DE102004013180A1 (en) | Garbage collection for smart cards | |
DE2062164A1 (en) | Method for generating a multi-level index for stored data units | |
DE112021004729T5 (en) | THREE-COLOR BITMAP ARRAY FOR GARBAGE COLLECTION | |
DE69637329T2 (en) | STORAGE MANAGEMENT SYSTEM AND METHOD | |
DE102004005290B3 (en) | Securing data in non-volatile data memory divided into segments involves management data per segment containing further data element to determine age range of second segment data compared to first segment data for incomplete clearing | |
DE2816838C2 (en) | Method and priority control unit for assigning priorities | |
EP0651897B1 (en) | Method for the dynamic management of a free store in a computer, the free store being designed for subdivision into at least two logic zones with different access characteristics | |
DE3009330C2 (en) | Method for sorting data stored in a hybrid associative memory and arrangement for carrying out the method | |
WO2002099650A2 (en) | Method for managing a chip card memory | |
DE2319468C3 (en) | Storage device and method for entering terms into the same | |
DE2206738A1 (en) | PROCEDURE FOR SORTING DATA IN A FILE AND THE DATA PROCESSING SYSTEM WORKING IN ACCORDANCE WITH THIS PROCEDURE | |
EP0433489A1 (en) | Method to purge a memory of objects, which are no longer accessible during program run |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OM8 | Search report available as to paragraph 43 lit. 1 sentence 1 patent law | ||
8110 | Request for examination paragraph 44 | ||
R012 | Request for examination validly filed |
Effective date: 20110309 |
|
R016 | Response to examination communication | ||
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final |
Effective date: 20120908 |