Fusuma: double-ended threaded compaction
- 22 June 2021
- conference paper
- conference paper
- Published by Association for Computing Machinery (ACM) in Proceedings of the 2021 ACM SIGPLAN International Symposium on Memory Management
Abstract
Jonkers's threaded compaction is attractive in the context of memory-constrained embedded systems because of its space efficiency. However, it cannot be applied to a heap where ordinary objects and meta-objects are intermingled for the following reason. It requires the object layout information, which is often stored in meta-objects, to update pointer fields inside objects correctly. Because Jonkers's threaded compaction reverses pointer directions during garbage collection (GC), it cannot follow the pointers to obtain the object layout. This paper proposes Fusuma, a double-ended threaded compaction that allows ordinary objects and meta-objects to be allocated in the same heap. Its key idea is to segregate ordinary objects at one end of the monolithic heap and meta-objects at the other to make it possible to separate the phases of threading pointers in ordinary objects and meta-objects. Much like Jonkers's threaded compaction, Fusuma does not require any additional space for each object. We implemented it in eJSVM, a JavaScript virtual machine for embedded systems, and compared its performance with eJSVM using mark-sweep GC. As a result, compaction enabled an IoT-oriented benchmark program to run in a 28-KiB heap, which is 20 KiB smaller than mark-sweep GC. We also confirmed that the GC overhead of Fusuma was less than 2.50x that of mark-sweep GC.Keywords
Funding Information
- Japan Society for the Promotion of Science (18KK0315)
This publication has 17 references indexed in Scilit:
- Concurrent marking of shape-changing objectsPublished by Association for Computing Machinery (ACM) ,2019
- Memento mori: dynamic allocation-site-based optimizationsPublished by Association for Computing Machinery (ACM) ,2015
- The Jikes Research Virtual Machine project: Building an open-source research communityIBM Systems Journal, 2005
- Garbage-first garbage collectionPublished by Association for Computing Machinery (ACM) ,2004
- Oil and water? High performance garbage collection in Java with MMTkPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2004
- Controlling fragmentation and space consumption in the metronome, a real-time garbage collector for JavaPublished by Association for Computing Machinery (ACM) ,2003
- An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypesPublished by Association for Computing Machinery (ACM) ,1989
- Efficient implementation of the smalltalk-80 systemPublished by Association for Computing Machinery (ACM) ,1984
- A nonrecursive list compacting algorithmCommunications of the ACM, 1970
- A Compaction Procedure for Variable-Length Storage ElementsThe Computer Journal, 1967