A Java virtual machine 2, comprises an execution engine for executing Java
byte code and a memory management system 14. The memory management system
14 performs garbage collection to remove objects that are not reachable
from the current state of the Java program. In the prior art memory
management system objects representing a class definition are only removed
from memory if the classloader object which has loaded the class object is
not reachable. According to the present invention the memory management
system 14 is arranged for removing classes which do not have any
instantiated objects which can be reached in the present state of the
program even if the classloader is still reachable. This results in a
substantial saving of memory. Preferably the objects representing a class
definition have a method which can signal to it that the definition can be
deleted from memory if it has no instantiated objects anymore.
Een virtuele machine 2 van Java, bestaat uit een uitvoeringsmotor voor het uitvoeren van de bytecode en een systeem 14 van Java van het geheugenbeheer. Systeem 14 van het geheugenbeheer voert huisvuilinzameling uit om voorwerpen te verwijderen die niet bereikbaar van de huidige staat van het programma van Java zijn. In het beheer van het vroegere kunstgeheugen heeft bezwaar het systeem vertegenwoordigend een klassendefinitie slechts worden verwijderd uit geheugen als het classloadervoorwerp dat het klassenvoorwerp heeft geladen niet bereikbaar is. Volgens de onderhavige uitvinding wordt systeem 14 van het geheugenbeheer geschikt voor het verwijderen van klassen die geen geconcretiseerde voorwerpen hebben die in de huidige staat van het programma kunnen worden bereikt zelfs als classloader nog bereikbaar is. Dit resulteert in een wezenlijke besparing van geheugen. Bij voorkeur hebben de voorwerpen die een klassendefinitie vertegenwoordigen een methode die kan signaleren aan het dat de definitie van geheugen kan worden geschrapt als het geen geconcretiseerde voorwerpen meer heeft.