DE102004013180A1 - Garbage collection for smart cards - Google Patents

Garbage collection for smart cards Download PDF

Info

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
Application number
DE200410013180
Other languages
German (de)
Inventor
Jörn TREGER
Robert Pinzinger
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.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
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 Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Priority to DE200410013180 priority Critical patent/DE102004013180A1/en
Priority to EP05715929A priority patent/EP1728162A1/en
Priority to PCT/EP2005/002552 priority patent/WO2005093580A1/en
Publication of DE102004013180A1 publication Critical patent/DE102004013180A1/en
Ceased legal-status Critical Current

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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/177Smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2143Clearing 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 1 gezeigt. An der Wurzel (Root) oder mit anderen Worten an der nullten Hierarchie-Ebene der Organisationsstruktur ist das Root-Objekt angeordnet, in 1 also das Objekt mit der Nummer eins (1). Bei anders gestalteten Heap-Strukturen kann es alternativ mehrere Root-Objekte geben, die dann auch als Start-Objekte bezeichnet werden, wobei von jedem Root-Objekt bzw. Start-Objekt aus eine eigene baumartige Organisationsstruktur ausgeht. Jede vom Root-Objekt ausgehende Referenz auf ein Objekt stellt den Eingang zu einem Zweig der Baumstruktur dar. In der Heap-Struktur von 1 sind ausgehend vom Root-Objekt 1 sechs Objekte 2, 20, 14, 26, 25 und 35 referenziert, so dass die Heap-Struktur sechs Zweige hat. Alle Objekte, die über die baumartige Organisationsstruktur direkt oder indirekt (d.h. über weitere Objekte) mit dem Root-Objekt verbunden sind (referenzierte Objekte genannt), sind vom Root-Objekt aus erreichbar. Nicht referenzierte Objekte, d.h. Objekte, die keine Verbindung über Referenzen zum Root-Objekt haben, sind vom Root-Objekt aus nicht erreichbar. In 1 sind z.B. die Objekte 31, 32, 33, 29, 30, 23 und 24 nicht referenziert und daher vom Root-Objekt aus nicht erreichbar.Such a tree-like organization structure, which is also called heap structure, is in 1 shown. At the root, or in other words at the zeroth hierarchical level of the organizational structure, the root object is located in 1 So the object with the number one ( 1 ). In the case of differently structured heap structures, there may alternatively be several root objects, which are also referred to as start objects, with each root object or start object starting its own tree-like organizational structure. Any reference to an object from the root object represents the input to a branch of the tree. In the heap structure of 1 are starting from the root object 1 six objects 2 . 20 . 14 . 26 . 25 and 35 so that the heap structure has six branches. All objects that are connected to the root object directly or indirectly (ie via further objects) via the tree-like organization structure (called referenced objects) can be reached from the root object. Non-referenced objects, ie objects that have no connection via references to the root object, are not accessible from the root object. In 1 are eg the objects 31 . 32 . 33 . 29 . 30 . 23 and 24 not referenced and therefore not reachable from the root object.

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 1 ist z.B. die Tiefe des Zweigs von Objekt 1 bis Objekt 5 gleich vier, die Tiefe des Zweigs von Objekt 1 bis Objekt 7 ebenfalls gleich vier, die Tiefe des Zweigs von Objekt 1 bis Objekt 8 gleich drei etc..The objects directly referenced from the root object form the objects of the first hierarchy level. The objects referenced by objects of the first hierarchical level form objects of a second hierarchical level, and so on. Each branch of the tree has a depth equal to the number of levels below the zeroth hierarchical level (root level) in that branch. In 1 Eg is the depth of the branch of object 1 to object 5 four, the depth of the branch of object 1 to object 7 also equal to four, the depth of the branch of object 1 to object 8th equal to three etc.

Unter Bezugnahme auf 1 ist eine vorwärtsgerichtete Heap-Struktur derart organisiert, dass zu jedem vorgegebenen Objekt (z.B. Objekt einer i-ten Hierarchieebene) jedes von dem vorgegebenen Objekt referenzierte Objekt (folglich Objekt der (i+1)-ten Hierarchieebene) einen größeren Index hat als das vorgegebene Objekt der i-ten Hierarchieebene. Unter Umständen kann es jedoch vorkommen, dass eine Heap-Struktur mit Rückwärtsreferenzen angelegt wird. Eine Rückwärtsreferenz ist dadurch ausgezeichnet, dass ein Objekt (einer i-ten Hierarchieebene) einen höheren Index hat als ein von diesem Objekt referenziertes Objekt (der darunterliegenden (i+1)-ten Hierarchieebene). In der Heap-Struktur aus 1 liegt beispielsweise zwischen dem Paar von Objekten (9, 6) eine Rückwärtsreferenz vor. Denn das Objekt Nr. 9 der zweiten Hierarchieebene hat einen höheren Index als das von Objekt Nr. 9 referenzierte Objekt Nr. 6 der darunterliegenden dritten Hierarchieebene. Ebenso liegt zwischen den Objekt-Paaren ((i), (i+1)) = (9, 8), (40, 37), (40, 38), (38, 36), (35, 34) und (34, 19) von referenzierendem Objekt (i) und referenziertem Objekt (i+1) jeweils eine Rückwärtsreferenz vor.With reference to 1 a forward-looking heap structure is organized such that for each given object (eg, object of an i-th hierarchy level) each of the given object re The identified object (hence object of the (i + 1) -th hierarchical level) has a larger index than the given object of the i-th hierarchy level. However, it may happen that a heap structure with backward references is created. A backward reference is distinguished in that an object (an i-th hierarchical level) has a higher index than an object referenced by that object (the underlying (i + 1) -th hierarchical level). Out in the heap structure 1 lies, for example, between the pair of objects ( 9 . 6 ) provide a backward reference. Because the object no. 9 The second hierarchical level has a higher index than that of object no. 9 referenced object no. 6 the underlying third hierarchical level. Likewise, between the object pairs ((i), (i + 1)) = ( 9 . 8th ) 40 . 37 ) 40 . 38 ) 38 . 36 ) 35 . 34 ) and ( 34 . 19 ) of referencing object (i) and referenced object (i + 1) each provide a backward reference.

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 1 veranschaulichten Verfahren zum Durchsuchen des Heap-Speichers nach referenzierten Objekten, das bei der Mark-and-Sweep Garbage Collection verwendet wird, werden, ausgehend vom Root-Objekt, die einzelnen Zweige der Heap-Struktur nacheinander nach referenzierten Objekten durchsucht, wobei jedes aufgefundene referenzierte Objekt als referenziertes (und daher erreichbares) Objekt markiert wird. Gemäß 1 wird zum Durchsuchen und Markieren zuerst für das Root-Objekt ein entsprechender Such- und Markier-Algorithmus aufgerufen und das Root-Objekt (in 1 Objekt 1) markiert. Anschließend wird, nacheinander für jeden Zweig, der Such- und Markier-Algorithmus rekursiv für alle Hierarchie-Ebenen unterhalb der nullten Hierarchie-Ebene (Root-Ebene) aufgerufen, bis das Ende des Zweigs erreicht ist. In 1 wird z.B. für den ersten Zweig der Such- und Markier-Algorithmus rekursiv aufgerufen für das Objekt 2 der ersten Hierarchie-Ebene, für das Objekt 3 der zweiten Hierarchie-Ebene, für das Objekt 4 der dritten Hierarchie-Ebene und schließlich für das Objekt 5 der vierten Hierarchie-Ebene. Anschließend wird, im Beispiel von 1, der Teilzweig durchsucht, der sich von Objekt 2 bis Objekt 7 erstreckt, wobei der Algorithmus wieder rekursiv aufgerufen wird. Zu letzt wird, im Beispiel von 1, der Zweig durchsucht, der sich von Objekt 1 bis Objekt 19 erstreckt. Die maximale Tiefe des Baums aus 1 ist gleich fünf und ist in dem Zweig verwirklicht, der sich von Objekt 1 bis Objekt 36 erstreckt.In the common, in 1 In the method of searching the heap memory for referenced objects used in mark-and-sweep garbage collection, starting from the root object, each branch of the heap structure is sequentially searched for referenced objects, each referenced being found Object is marked as referenced (and therefore reachable) object. According to 1 For searching and marking, first a corresponding search and marking algorithm is called for the root object and the root object (in 1 object 1 ). Then, one by one for each branch, the search and mark algorithm is called recursively for all hierarchy levels below the zeroth hierarchical level (root level) until the end of the branch is reached. In 1 For example, for the first branch, the search and mark algorithm is called recursively for the object 2 the first hierarchy level, for the object 3 the second hierarchy level, for the object 4 the third hierarchy level and finally for the object 5 the fourth hierarchical level. Subsequently, in the example of 1 that searches sub-branch, which is different from object 2 to object 7 extends, recursively calling the algorithm again. To last, in the example of 1 searching the branch, which differs from object 1 to object 19 extends. The maximum depth of the tree 1 is equal to five and is realized in the branch that is different from object 1 to object 36 extends.

Im Beispiel aus 1 sind die Objekte 31, 32, 33, 29, 30, 23 und 24 nicht referenziert und daher „Müll" (garbage).In the example off 1 are the objects 31 . 32 . 33 . 29 . 30 . 23 and 24 not referenced and therefore "garbage".

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 1 dargestellte

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.
So be for a tree like the one in 1 illustrated
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, rc = n/8 + d·v (1) Then the memory requirement rc of the algorithm in bytes, rc = n / 8 + dv (1)

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 3 gezeigten z.B. mit der Nummer 1, bis zu einem letzten Objekt, gemäß 3 beispielsweise mit der Nummer 40. Falls das Root-Objekt die höchste Nummer hat, wird das Durchsuchen z.B. bei der höchsten Nummer begonnen und bis zum Objekt mit der niedrigsten Nummer (z.B. Eins oder Null) durchgeführt. Gefundene referenzierte Objekte werden in diesem Fall vorzugsweise markiert, so dass die nicht referenzierten Objekte übrig bleiben. Nachfolgend kann wie oben beschrieben ein Bereinigungsschritt folgen.If the heap memory is free of backward references - in other words, if the heap memory is strictly forward - it is sufficient to search the memory once in the order of the object indexes or the numbering of the objects, preferably starting with the Root object used in a startup object, in an embodiment like the one in 3 shown eg with the number 1 , up to a last object, according to 3 for example, with the number 40 , If the root object has the highest number, the search is started, for example, at the highest number and performed to the object with the lowest number (eg one or zero). Found referenced objects are preferably marked in this case so that the non-referenced objects are left over. Subsequently, as described above, a cleanup step may follow.

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 2 schematisch veranschaulicht ist. Da der Header des Objekts herkömmlicherweise in der Regel im EEPROM vorgesehen ist, ist auch das herkömmliche Flag im EEPROM vorgesehen. Hierdurch ist das herkömmliche Flag langsam und belastend für die Speicherressourcen eines Datenträgers (Smart Card, Chipmodul, Chip etc.), bei dem das Verfahren angewendet wird (EEPROM kann nur eine begrenzte Anzahl von Malen überschrieben werden). Das Verfahren mit dem bevorzugten erfindungsgemäßen Markierungsfeld im RAM hat daher den zusätzlichen Vorteil, dass es besonders schnell ist, da die Schreibzeit eines RAM deutlich niedriger ist als die eines EEPROM. Zudem ist das Verfahren mit dem bevorzugten erfindungsgemäßen Markierungsfeld im RAM besonders schonend für die Speicherressourcen eines Datenträgers, bei dem das Verfahren angewendet wird.The tag field according to the invention is preferably provided in RAM (Random Access Memory), unlike conventional methods for searching a heap memory. In conventional methods for searching a heap memory, to flag an object as referenced, a flag in the header of the object is set (switched) as by 2 is illustrated schematically. Since the header of the object is conventionally usually provided in the EEPROM, the conventional flag is also provided in the EEPROM. As a result, the conventional flag is slow and burdensome for the storage resources of a data carrier (smart card, chip module, chip, etc.) to which the method is applied (EEPROM can only be overwritten a limited number of times). The method with the preferred marking field according to the invention in RAM therefore has the additional advantage that it is particularly fast, since the writing time of a RAM is significantly lower than that of an EEPROM. In addition, the method with the preferred marking field according to the invention in RAM is particularly gentle on the memory resources of a data carrier in which the method is used.

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:

1 eine baumartig organisierte Heap-Struktur, anhand der die Mark-Phase eines Speicherbereinigungsverfahrens (Garbage Collection) nach dem Stand der Technik veranschaulicht ist; 1 a tree-organized heap structure illustrating the mark phase of a prior art garbage collection method;

2 eine schematische Darstellung eines im EEPROM einer Java Card abgespeicherten Objekt-Headers, in dem Referenzen auf ebenfalls im EEPROM abgespeicherte Daten abgespeichert sind, gemäß dem Stand der Technik; 2 a schematic representation of an EEPROM stored in a Java Card object header, are stored in the references to also stored in the EEPROM data, according to the prior art;

3 eine zu der in 1 gezeigten analoge baumartig organisierte Heap-Struktur, anhand der die Mark-Phase eines Speicherbereinigungsverfahrens (Garbage Collection) gemäß einer Ausführungsform der Erfindung veranschaulicht ist, zu einem ersten Verfahrensstand während des Durchsuchens des Heap-Speichers; 3 one to the in 1 shown analog tree-like organized heap structure, using the Mark phase of a garbage collection method is illustrated according to an embodiment of the invention, to a first state of the process during the search of the heap memory;

4 ein Markierungsfeld mit zwei Datenfeldern „Valid" und „Scanned" für jedes Objekt der in 3 gezeigten Heap-Struktur, mit Markierungen, die dem in 3 gezeigten Verfahrensstand entsprechen; 4 a check box with two data fields "Valid" and "Scanned" for each object in 3 shown heap structure, with markings in the 3 process state shown correspond;

5 die Heap-Struktur aus 3 zu einem zweiten Verfahrensstand während des Durchsuchens des Heap-Speichers; 5 the heap structure out 3 to a second state of the process while searching the heap memory;

6 das Markierungsfeld aus 4, mit Markierungen, die dem in 5 gezeigten Verfahrensstand entsprechen; 6 the checkbox 4 , with markings corresponding to the in 5 process state shown correspond;

7 die Heap-Struktur aus 3 zu einem dritten Verfahrensstand während des Durchsuchens des Heap-Speichers; 7 the heap structure out 3 to a third state of the process while searching the heap memory;

8 das Markierungsfeld aus 4, mit Markierungen, die dem in 7 gezeigten Verfahrensstand entsprechen. 8th the checkbox 4 , with markings corresponding to the in 7 process state shown correspond.

3 zeigt eine baumartig organisierte Heap-Struktur, anhand der das Durchsuchen eines Heap-Speichers nach Referenzen, insbesondere bei der Mark-Phase eines Speicherbereinigungsverfahrens (Garbage Collection), gemäß einer Ausführungsform der Erfindung veranschaulicht ist, zu einem ersten Verfahrensstand während des Durchsuchens des Heap-Speichers. 3 1 shows a tree-like organized heap structure, which is used to search a heap memory for references, in particular during the mark phase of a garbage collection process, according to an embodiment of the invention, to a first state of the process during the search of the heap. memory.

Der Heap-Speicher weist 40 Objekte auf, die fortlaufend von 1 bis 40 durchnummeriert sind, wobei das Objekt mit der Nummer „1" das Root-Objekt ist. Für jedes Objekt sind zwei Datenfelder vorgesehen, um das Objekt zu markieren, nämlich ein „valid"-Datenfeld und ein „scanned"-Datenfeld.The heap memory points 40 Objects on continuously from 1 to 40 numbered with the number "1" being the root object For each object, two data fields are provided to mark the object, namely a "valid" data field and a "scanned" data field.

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 3 dargestellte

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.
So be for a tree like the one in 3 illustrated
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, rc = (2·n + 8)/8 + v (2) Then, for the memory requirement rc of the preferred algorithm according to the invention in bytes, rc = (2n + 8) / 8 + v (2)

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: nmax = 4·(rc – v – 1) (3) From equation (2) it is possible to determine in advance the maximum number n max of objects that can be accommodated in a memory of size rc: n Max = 4 · (rc - v - 1) (3)

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 4 dargestellt) mit zwei Datenfeldern vorgesehen sind, nämlich einem Datenfeld für ein valid-Flag und einem Datenfeld für ein scanned-Flag. Dann lautet der beispielhafte Such- und Markieralgorithmus:

Figure 00160001
Figure 00170001
The following is an exemplary recursion-free algorithm 1 in which the inventive method for searching a heap memory and for marking found referenced objects is implemented. Let n be the number of objects in the heap memory. In addition, create an object list in which a check box (schematically in 4 ) are provided with two data fields, namely a data field for a valid flag and a data field for a scanned flag. Then the example search and mark algorithm is:
Figure 00160001
Figure 00170001

(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. 4). Das valid-Flag eines Objekts ist jeweils dann gesetzt, wenn das Objekt referenziert ist. Das scanned-Flag ist jeweils dann gesetzt, wenn alle von diesem Objekt ausgehenden Referenzen abgesucht worden sind. Die Objekte sind von 1 bis n nummeriert, wobei das mit 1 nummerierte Objekt das Root-Objekt (Start-Objekt) ist. Nach Durchlauf des Algorithmus hat die Objektliste die in 4 dargestellte Gestalt und die Heap-Struktur die in 3 dargestellte Gestalt.In the foregoing Algorithm 1, the two data fields of the check box are executed as a valid flag and a scanned flag (see FIG. 4 ). The valid flag of an object is always set if the object is referenced. The scanned flag is set whenever all references from this object have been scanned. The objects are from 1 Numbered to n, with the 1 numbered object is the root object (start object). After running the algorithm, the object list has the in 4 shown figure and the heap structure in 3 illustrated figure.

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 1) zum Objekt mit dem nächsthöheren Objektindex fort, d.h. zum Objekt Nr. 2, und prüft, ob das Objekt Nr. 2 valid ist, d.h. ob sein valid-Flag gesetzt ist. Falls das valid-Flag von Objekt Nr. 2 (abweichend von 3) nicht gesetzt ist, schreitet der Algorithmus 1 unmittelbar weiter zu Objekt 3. Falls hingegen (wie in 3) das valid-Flag von Objekt Nr. 2 gesetzt ist, werden alle vom Objekt 2 abgehenden Referenzen abgesucht und die von Objekt 2 aus referenzierten Objekte als valid markiert. Schließlich wird das scanned-Flag des Objekts 2 gesetzt, und anschließend schreitet der Algorithmus 1 weiter zu Objekt 3.Algorithm 1 now proceeds from the root object (i = 1, ie object index 1 ) to the object with the next higher object index, ie to object no. 2 , and checks if the object no. 2 is valid, ie if its valid flag is set. If the valid flag of object no. 2 (deviating from 3 ) is not set, the algorithm 1 proceeds directly to the object 3 , If, however, (as in 3 ) the valid flag of object no. 2 is set, all of the object 2 scanned outgoing references and those from object 2 selected from referenced objects as valid. Finally, the scanned flag of the object 2 is set, and then the algorithm 1 proceeds to the object 3 ,

Das Verfahren wird bis zum letzten Objekt des Heaps (bei 3 Objekt 40) durchgeführt. 4 zeigt die Belegung der valid-Flags und scanned-Flags des Markierungsfeldes für die Heap-Struktur aus 3, nachdem Algorithmus 1 auf die Heap-Struktur angewandt worden ist.The process continues until the last object of the heap (at 3 object 40 ) carried out. 4 shows the occupancy of the valid flags and scanned flags of the heap structure check box 3 after algorithm 1 has been applied to the heap structure.

Beim Beispiel aus 3 hat die Heap-Struktur Rückwärtsreferenzen, die bewirken, dass nicht alle Objekte der Heap-Struktur überprüft werden können, falls nur ein einziger Durchlauf des Durchsuchens des Heaps durchgeführt wird. Beispielsweise besteht zwischen dem Paar von Objekten (6, 9) eine Rückwärtsreferenz. Anders gesagt hat das Objekt 9 der zweiten Hierarchieebene einen höheren Objektindex als das Objekt 6 der dritten Hierarchieebene. Aus diesem Grund ist, wenn der Algorithmus 1 von Objekt 5, das bereits als valid und scanned markiert sein soll, zu Objekt 6 fortschreitet, das Objekt 6 noch nicht als valid markiert. Folglich werden die von Objekt ausgehenden Referenzen nicht abgescannt, sondern der Algorithmus 1 schreitet di rekt fort zu Objekt 7, von dort zu Objekt 8 und weiter zu Objekt 9. Objekte 6, 7 und 8 bleiben unmarkiert, d.h. weder das valid-Flag noch das scanned-Flag wird gesetzt. Erst Objekt 9 ist wieder valid. Daher werden Objekte 6 und 8 als valid markiert und anschließend Objekt 9 als scanned markiert. Die scanned-Flags der Objekte 6 und 8 bleiben nicht gesetzt (vgl. auch 4). Bei Objekt 7 bleiben das valid-Flag und das scanned-Flag beide nicht gesetzt (s. 4).In the example off 3 the heap structure has backward references, which mean that not all objects of the heap structure can be checked if only a single pass of the heap search is performed. For example, between the pair of objects ( 6 . 9 ) a backward reference. In other words, the object has 9 the second hierarchical level has a higher object index than the object 6 the third hierarchical level. For this reason, if the algorithm is 1 of object 5 that should already be marked as valid and scanned to object 6 progresses, the object 6 not yet marked as valid. Consequently, the references emanating from object are not scanned, but algorithm 1 proceeds straight to object 7 , from there to object 8th and on to object 9 , objects 6 . 7 and 8th remain unchecked, ie neither the valid flag nor the scanned flag is set. First object 9 is valid again. Therefore, objects become 6 and 8th marked as valid and then object 9 marked as scanned. The scanned flags of the objects 6 and 8th do not stay set (see also 4 ). At object 7 both the valid flag and the scanned flag are not set (s. 4 ).

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 3 von 1 bis 40) und rückwärts (bei 3 von 40 nach 1) durchsucht wird.Objects in the heap structure that have backward references can be checked by alternating the heap memory forward as often as necessary (at 3 from 1 to 40 ) and backwards (at 3 from 40 to 1 ) is searched.

Während 3 die Heap-Struktur zeigt, nachdem der Heap-Speicher ein Mal vorwärts durchsucht worden ist, indem Algorithmus 1 darauf angewandet worden ist, zeigt 5 dieselbe Heap-Struktur, nachdem der Heap-Speicher zusätzlich ein Mal rückwärts durchsucht worden ist. 5 zeigt also die Heap-Struktur, nachdem ein Algorithmus 2 darauf angewendet worden ist, wie z.B. der folgende:

Figure 00190001
Figure 00200001
While 3 the heap structure points after the heap memory has been searched once forward by applying algorithm 1 to it 5 the same heap structure after the heap memory has been additionally searched backwards once. 5 So it shows the heap structure after an algorithm 2 has been applied to it, such as the following:
Figure 00190001
Figure 00200001

(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 6 und 8 die scanned-Flags gesetzt worden, die nach dem Vorwärts-Durchlauf noch nicht gesetzt waren. Für Objekt 7 ist beim Rückwärts-Durchlauf das valid-Flag gesetzt worden. Die während des Rückwärts-Durchlaufs zusätzlich zum Vorwärts-Durchlauf gesetzten Flags sind auch aus 6 ersichtlich, in der das Markierungsfeld aus 4 gezeigt ist, nachdem zusätzlich ein Rückwärts-Durchlauf auf den Heap-Speicher angewendet worden ist.Algorithm 2 includes a forward pass (forward scan) through the heap memory, which is essentially the same as algorithm 1, and a backward pass (backward scan). In the backward pass of Algorithm 2 are especially for the objects 6 and 8th set the scanned flags which were not yet set after the forward pass. For object 7 the valid flag has been set during the backward pass. The flags set during the backward pass in addition to the forward pass are also off 6 can be seen in the the check box off 4 is shown after additionally a backward pass has been applied to the heap memory.

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 8 dargestellte Gestalt und die Heap-Struktur die in 7 dargestellte Gestalt.

Figure 00210001
Figure 00220001
Figure 00230001
In a preferred algorithm 3 given below, a binary third data field "end flag" is used in addition, which is switched as soon as a run of the search of the heap memory has been made in which no marking has been made the object list has the in 8th shown figure and the heap structure in 7 illustrated figure.
Figure 00210001
Figure 00220001
Figure 00230001

(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.

7 zeigt die Heap-Struktur aus 1 und 3, nachdem Algorithmus 3 auf den zu Grunde liegenden Heap-Speicher angewendet worden ist, und 8 zeigt die zugehörige Objektliste. Alle Objekte der Heap-Struktur sind bereits als valid markiert. Der Zustand gemäß 7 und 8 ist auch der Zustand bei Beginn des letzten Durchlaufs der (do,while)-Schleife des Algorithmus 3. Da bei diesem Durchlauf keine Markierung an einem valid-Flag vorgenommen werden, bleibt das End-Flag auf „true" gesetzt, so dass die (do,while)-Schleife nach diesem letzten Durchlauf beendet wird. 7 shows the heap structure 1 and 3 after algorithm 3 has been applied to the underlying heap memory, and 8th shows the associated object list. All objects of the heap structure are already marked as valid. The condition according to 7 and 8th is also the state at the beginning of the last pass of the (do, while) loop of algorithm 3. Since there is no Mar in this pass If the flag is set to a valid flag, the end flag remains set to true so that the (do, while) loop terminates after this last pass.

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äß 7 und 8 sind nur die nicht referenzierten Objekte 31, 32, 33, 29, 30, 23, 24 mit nicht markiertem valid-Flag übrig geblieben. Alle referenzierten Objekte sind markiert.With the method implemented by the algorithm 3, it is thus possible to find all (still) referenced objects for a heap memory whose heap structure has backward references. According to 7 and 8th are only the unreferenced objects 31 . 32 . 33 . 29 . 30 . 23 . 24 left unchecked valid flag. All referenced objects are marked.

Claims (19)

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.Method for searching dynamically assigned Heap memory for referenced or unreferenced objects, in which a search of the heap memory by means of an algorithm carried out which works without recursion. Verfahren nach Anspruch 1, wobei jedem Objekt ein eindeutiger Objektindex zugewiesen ist, wobei durch die Objektindizes aller Objekte des Heap-Speichers eine eindeutige Reihenfolge der Objekte festgelegt ist, und wobei gemäß dem Algorithmus die Objekte des Heap-Speichers in der Reihenfolge ihrer Objektindizes abgesucht werden.The method of claim 1, wherein each object unique object index is assigned, passing through the object indexes all objects of the heap memory have a unique order of Objects is defined, and where according to the algorithm the objects heap memory in the order of their object indexes become. Verfahren nach Anspruch 1 oder 2, wobei die Objekte in dem Heap-Speicher nummeriert sind, und wobei gemäß dem Algorithmus die Objekte des Heap-Speichers in der Reihenfolge ihrer Nummerierung abgesucht werden.Method according to claim 1 or 2, wherein the objects are numbered in the heap memory, and wherein according to the algorithm the objects of the heap memory be searched in the order of their numbering. Verfahren nach Anspruch 2 oder 3, wobei der Heap-Speicher bezüglich der Objektindizes bzw. Nummerierung vorwärtsgerichtet ist, und wobei der Heap-Speicher gemäß dem Algorithmus genau ein Mal durchsucht wird.The method of claim 2 or 3, wherein the heap memory in terms of the object indexes or numbering forwarded, and where the heap memory according to the algorithm is searched exactly once. Verfahren nach Anspruch 2 oder 3, wobei der Heap-Speicher bezüglich der Objektindizes bzw. Nummerierung vorwärtsgerichtet ist, und wobei der Heap-Speicher gemäß dem Algorithmus genau zwei Mal durchsucht wird, wobei das zweite Mal des Durchsuchens zur Überprüfung durchgeführt wird, dass der Algorithmus beendet werden kann.The method of claim 2 or 3, wherein the heap memory in terms of the object indexes or numbering forwarded, and where the heap memory according to the algorithm is searched exactly twice, being the second time of browsing being carried out for verification, that the algorithm can be terminated. Verfahren nach Anspruch 2 oder 3, wobei 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 haben, und wobei der Heap-Speicher mindestens zwei Mal durchsucht wird.The method of claim 2 or 3, wherein the heap memory in terms of 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, and wherein the heap memory is searched at least twice. Verfahren nach Anspruch 2 oder 3, wobei 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 haben, und wobei der Heap-Speicher mindestens drei Mal durchsucht wird, wobei das letzte, insbesondere dritte, Mal des Durchsuchens zur Überprüfung durchgeführt wird, dass der Algorithmus beendet werden kann.The method of claim 2 or 3, wherein the heap memory in terms of 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, and wherein the heap memory is searched at least three times, the last, especially third, time of the search is carried out for review, that the algorithm can be terminated. Verfahren nach einem der Ansprüche 2 bis 7, wobei der Heap-Speicher beginnend mit einem Start-Objekt (1), das einen niedrigsten Objektindex (1) hat, bis zu einem End-Objekt (40), das einen höchsten Obkjektindex (40) hat, durchsucht wird.Method according to one of claims 2 to 7, wherein the heap memory starting with a start object ( 1 ), which has a lowest object index ( 1 ), to an end object ( 40 ), which has a highest object index ( 40 ) is searched. Verfahren nach einem der Ansprüche 2 bis 8, wobei der Heap-Speicher beginnend mit einem End-Objekt (40), das einen höchsten Objektindex (40) hat, bis zu einem Start-Objekt (1), das einen niedrigsten Objektindex (1) hat, durchsucht wird.Method according to one of claims 2 to 8, wherein the heap memory starting with an end object ( 40 ), which has a highest object index ( 40 ), up to a start object ( 1 ), which has a lowest object index ( 1 ) is searched. Verfahren nach den Ansprüchen 8 und 9 in Verbindung miteinander, wobei der Heap-Speicher mindestens je ein Mal vom Start-Objekt (1) zum End-Objekt (40) und, in umgekehrter Reihenfolge, vom End-Objekt (40) zum Start-Objekt (1) durchsucht wird.Method according to claims 8 and 9 in association with each other, wherein the heap memory is read at least once each time from the start object ( 1 ) to the end object ( 40 ) and, in reverse order, from the end object ( 40 ) to the start object ( 1 ) is searched. Verfahren nach einem der Ansprüche 1 bis 10, wobei jedes mittels des Algorithmus gefundene referenzierte aktuelle Objekte markiert wird.Method according to one of claims 1 to 10, wherein each means of the algorithm found referenced current objects marked becomes. Verfahren nach Anspruch 11, wobei das Verfahren beendet wird, sobald ein Durchlauf des Durchsuchens des gesamten Heap-Speichers durchgeführt worden ist, bei dem keine Markierung vorgenommen worden ist.The method of claim 11, wherein the method is terminated once a sweep of searching the entire heap memory has been performed, wherein no mark has been made that is. Verfahren nach Anspruch 11 oder 12, wobei das Markieren unter Verwendung eines für den Algorithmus zugänglichen Markierungsfeldes durchgeführt wird.The method of claim 11 or 12, wherein the marking using a for accessible to the algorithm Check box performed becomes. Verfahren nach Anspruch 13, wobei das Markierungsfeld in einem flüchtigen Speicher vorgesehen ist, insbesondere in einem RAM-Speicher.The method of claim 13, wherein the marker field in a fleeting Memory is provided, in particular in a RAM memory. Verfahren nach Anspruch 13 oder 14, wobei zum Markieren ein Markierungsfeld verwendet wird, das für das aktuelle Objekt ein erstes Datenfeld (valid-Flag) und ein zweites Datenfeld (scanned-Flag) aufweist, und wobei das erste Datenfeld (valid-Flag) markiert wird, falls das aktuelle Objekt referenziert ist, und wobei das zweite Datenfeld (scanned-Flag) 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-Flag) markiert ist.The method of claim 13 or 14, wherein for marking a check box is used, which is a first for the current object Data field (valid flag) and a second data field (scanned flag) and the first data field (valid flag) is marked if the current one Object is referenced, and where the second data field (scanned flag) is marked if all referenced from the current object are referenced Objects are marked as referenced by that referenced objects marked the first data field (valid flag) is. Verfahren nach Anspruch 15, wobei das Verfahren beendet wird, sobald ein Durchlauf des Durchsuchens des gesamten Heap-Speichers durchgeführt worden ist, bei dem keine Markierung eines ersten Datenfeldes (valid-Flag) vorgenommen worden ist.The method of claim 15, wherein the method is stopped once a run of searching the entire Heap memory performed where there is no marking of a first data field (valid flag) has been made. Verfahren nach einem der Ansprüche 1 bis 16, wobei mittels des Algorithmus gefundene Objekte, auf die keine oder noch keine Referenz gefunden wurde, nicht markiert und/oder übergangen werden.Method according to one of claims 1 to 16, wherein means of the algorithm found objects to which no or no Reference was found, not marked and / or ignored become. Verfahren nach einem der Ansprüche 1 bis 17, wobei der Heap-Speicher in einem nichtflüchtigen Speicher, insbesondere EEPROM-Speicher, vorgesehen ist.Method according to one of claims 1 to 17, wherein the heap memory in a non-volatile Memory, in particular EEPROM memory, is provided. Datenträger, insbesondere Chipkarte, insbesondere Java Card, oder Chipmodul oder Chip zum Einbau in einen Datenträger, mit einem Mikroprozessor, mindestens einem Speicher und einem in dem Datenträger implementierten Verfahren nach einem der Ansprüche 1 bis 18.disk, in particular chip card, in particular Java Card, or chip module or Chip for installation in a data carrier, with a microprocessor, at least one memory and one in implemented on the disk Method according to one of the claims 1 to 18.
DE200410013180 2004-03-17 2004-03-17 Garbage collection for smart cards Ceased DE102004013180A1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9907278D0 (en) * 1999-03-31 1999-05-26 Philips Electronics Nv Memory reclamation method and apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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