The treadmill: real-time garbage collection without motion sickness
ACM SIGPLAN Notices
Scheduling garbage collector for embedded real-time systems
Proceedings of the ACM SIGPLAN 1999 workshop on Languages, compilers, and tools for embedded systems
Concurrent garbage collection using hardware-assisted profiling
Proceedings of the 2nd international symposium on Memory management
A generational mostly-concurrent garbage collector
Proceedings of the 2nd international symposium on Memory management
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
Uniprocessor Garbage Collection Techniques
IWMM '92 Proceedings of the International Workshop on Memory Management
A unified theory of garbage collection
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Garbage-first garbage collection
Proceedings of the 4th international symposium on Memory management
A parallel, incremental, mostly concurrent garbage collector for servers
ACM Transactions on Programming Languages and Systems (TOPLAS)
An efficient on-the-fly cycle collection
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 6th international symposium on Memory management
Concurrent GC leveraging transactional memory
Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
A study of concurrent real-time garbage collectors
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
Garbage collection (GC) is one of the largest sources of unpredictability in Java™ applications, and a real-time virtual machine must use garbage collection algorithms that minimize delays to real-time threads and at the same time maximize the overall application's throughput. In order to achieve the optimal tradeoff between these conflicting objectives, the GC cycle (which needs to take place periodically in order to free the memory no longer used by the application) needs to be triggered at the optimal time: if it is triggered too soon then the application's throughput will decrease unnecessarily, while if it is triggered too late then the application can run out of free memory and block real-time threads unnecessarily. Starting with Sun Java RTS 2.0, a new real-time garbage collector (RTGC) is available. One of the key RTGC parameters is the StartupMemoryThreshold, which determines how low the free memory in the system can fall before a garbage collection is triggered. This paper presents a framework for dynamically adapting the StartupMemoryThreshold for achieving the optimal balance between the application's throughput and pause time, which was integrated into the beta release of Java RTS 2.2. An experimental evaluation of this framework using the SPECjbb2005 benchmark confirmed its effectiveness. This framework can be used in conjunction with any concurrent or a time-based incremental garbage collector.