The treadmill: real-time garbage collection without motion sickness
ACM SIGPLAN Notices
Region-based memory management
Information and Computation
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
Thin locks: featherweight synchronization for Java
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Memory management with explicit regions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Live memory analysis for garbage collection in embedded systems
Proceedings of the ACM SIGPLAN 1999 workshop on Languages, compilers, and tools for embedded systems
Eliminating external fragmentation in a non-moving garbage collector for Java
CASES '00 Proceedings of the 2000 international conference on Compilers, architecture, and synthesis for embedded systems
Garbage Collection of Linked Data Structures
ACM Computing Surveys (CSUR)
Comparison of Compacting Algorithms for Garbage Collection
ACM Transactions on Programming Languages and Systems (TOPLAS)
List processing in real time on a serial computer
Communications of the ACM
A nonrecursive list compacting algorithm
Communications of the ACM
Structure of a LISP system using two-level storage
Communications of the ACM
Compact list representation: definition, garbage collection, and system implementation
Communications of the ACM
A LISP garbage-collector for virtual-memory computer systems
Communications of the ACM
Communications of the ACM
A note on the efficiency of a LISP computation in a paged machine
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
A method for overlapping and erasure of lists
Communications of the ACM
A parallel, real-time garbage collector
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The Real-Time Specification for Java
The Real-Time Specification for Java
Tuning garbage collection for reducing memory system energy in an embedded java environment
ACM Transactions on Embedded Computing Systems (TECS)
A real-time garbage collector with low overhead and consistent utilization
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Garbage Collector for the Concurrent Real-Time Language Erlang
IWMM '95 Proceedings of the International Workshop on Memory Management
Space- and Time-Efficient Implementation of the Java Object Model
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Storage Allocation for Real-Time, Embedded Systems
EMSOFT '01 Proceedings of the First International Workshop on Embedded Software
Decreasing Memory Overhead in Hard Real-Time Garbage Collection
EMSOFT '02 Proceedings of the Second International Conference on Embedded Software
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Non-compacting memory allocation and real-time garbage collection
Non-compacting memory allocation and real-time garbage collection
Heap compression for memory-constrained Java environments
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Syncopation: generational real-time garbage collection in the metronome
LCTES '05 Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Testing in resource constrained execution environments
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Jelatine: a virtual machine for small embedded systems
JTRES '06 Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems
A dynamic binary instrumentation engine for the ARM architecture
CASES '06 Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems
Java takes flight: time-portable real-time programming with exotasks
Proceedings of the 2007 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Parametric prediction of heap memory requirements
Proceedings of the 7th international symposium on Memory management
Low-latency time-portable real-time programming with Exotasks
ACM Transactions on Embedded Computing Systems (TECS)
Responsive systems: an introduction
IBM Systems Journal
Reducing exit stub memory consumption in code caches
HiPEAC'07 Proceedings of the 2nd international conference on High performance embedded architectures and compilers
Improved replication-based incremental garbage collection for embedded systems
Proceedings of the 2010 international symposium on Memory management
Exploiting memory usage patterns to improve garbage collections in Java
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Offline GC: trashing reachable objects on tiny devices
Proceedings of the 9th ACM Conference on Embedded Networked Sensor Systems
MemSafe: ensuring the spatial and temporal memory safety of C at runtime
Software—Practice & Experience
Science of Computer Programming
Hi-index | 0.00 |
Security concerns on embedded devices like cellular phones make Java an extremely attractive technology for providing third-party and user-downloadable functionality. However, garbage collectors have typically required several times the maximum live data set size (which is the minimum possible heap size) in order to run well. In addition, the size of the virtual machine (ROM) image and the size of the collector's data structures (metadata) have not been a concern for server- or workstation-oriented collectors.We have implemented two different collectors specifically designed to operate well on small embedded devices. We have also developed a number of algorithmic improvements and compression techniques that allow us to eliminate almost all of the per-object overhead that the virtual machine and the garbage collector require. We describe these optimizations and present measurements of the Java embedded benchmarks (EEMBC) of our implementations on both an IA32 laptop and an ARM-based PDA.For applications with low to moderate allocation rates, our optimized collector running on the ARM is able to achieve 85% of peak performance with only 1.05 to 1.3 times the absolute minimum heap size. For applications with high allocation rates, the collector achieves 85% of peak performance with 1.75 to 2.5 times the minimum heap size. The collector code takes up 40 KB of ROM, and collector metadata overhead has been almost completely eliminated, consuming only 0.4% of the heap.