Abstract

Dynamic memory management has received extensive attention in the last decade. Reducing memory fragmentation is a major design consideration to achieve efficient memory management. However, for some loop intensive applications (e.g., Apache HTTP and Ngnix), state-of-the-art dynamic memory allocators are not capable of reducing fragmentation efficiently due to repeatedly allocations and deallocations of objects with varying size. To address this problem, we propose a smart memory allocator, called Metis, designed for loop intensive applications. In Metis, a program's runtime is divided into two phases: profiling phase and activation phase. For the former, Metis builds a model to group historical allocation instructions, the objects created which are interconnected and likely to be reclaimed together during the same Garbage Collection (GC) cycle. For the latter, a region group (a contiguous piece of memory that can be reclaimed as a whole) is created to serve allocation instructions from one instruction group in the model. Our experiment with extended SPECjvm2008 traces shows that 79% of true fragmentation in the global heap can be reduced and a larger fraction of false fragmentation in region groups.

Authors

Xu S; Guo Q; Dueck G; Bremner D; Wang Y

Pagination

pp. 1-9

Publisher

Association for Computing Machinery (ACM)

Publication Date

July 4, 2015

DOI

10.1145/2843915.2843920

Name of conference

Proceedings of the 10th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
View published work (Non-McMaster Users)

Contact the Experts team