No Silver Bullet - Garbage Collection for Java in Embedded Systems

by Alexandre Petit-Bianco

In January 2000, Cygnus was bought by Red Hat.


Content

  1. Definitions
  2. Garbage Collection and Java
  3. Which Garbage Collection for Embedded Java?
  4. Non-disruptive Garbage Collection
  5. The Kaffe conservative garbage collector
  6. Preventive Measures
  7. Flexibility Required
  8. Conclusion
  9. The Cygnus GNUPro compiler for the Java language

Abstract

The program specifications and hardware constraints of embedded systems result in some unique problems regarding garbage collection. Different garbage collection algorithms are appropriate depending on the embedded systems application, thus preventing garbage collection from being a "silver bullet" problem.

The efficiency of garbage collection algorithms depends on numerous factors. One factor is the hardware of the targeted platform: its CPU type, the amount of memory available, and the availability of memory management hardware support. Another factor is the type of runtime system (compiled or interpreted) and the level of support it provides for memory allocation (supervised or unsupervised). Finally, factors depending on the application itself, notably its memory usage patterns (memory cells connectivity, relative size, and life span of allocated objects), are also relevant.

Once these factors have been taken into consideration, the suitable garbage collection algorithms should be reviewed in order to take into account their processing costs, the space overhead they impose (both on the allocated data and on the code size) as well as the performance degradation they incur as the heap fills up.


Next >