Idle Time Garbage Collection Scheduling
Venue
37th annual ACM SIGPLAN conference on Programming Language Design and Implementation, ACM, New York, NY, USA (2016), pp. 570-583
Publication Year
2016
Authors
Ulan Degenbaev, Jochen Eisinger, Manfred Ernst, Ross McIlroy, Hannes Payer
BibTeX
Abstract
Efficient garbage collection is increasingly important in today's managed language
runtime systems that demand low latency, low memory consumption, and high
throughput. Garbage collection may pause the application for many milliseconds to
identify live memory, free unused memory, and compact fragmented regions of memory,
even when employing concurrent garbage collection. In animation-based applications
that require 60 frames per second, these pause times may be observable, degrading
user experience. This paper introduces idle time garbage collection scheduling to
increase the responsiveness of applications by hiding expensive garbage collection
operations inside of small, otherwise unused idle portions of the application's
execution, resulting in smoother animations. Additionally we take advantage of
idleness to reduce memory consumption while allowing higher memory use when high
throughput is required. We implemented idle time garbage collection scheduling in
V8, an open-source, production JavaScript virtual machine running within Chrome. We
present performance results on various benchmarks running popular webpages and show
that idle time garbage collection scheduling can significantly improve latency and
memory consumption. Furthermore, we introduce a new metric called frame time
discrepancy to quantify the quality of the user experience and precisely measure
the improvements that idle time garbage collection scheduling provides for a
WebGL-based game benchmark. Idle time garbage collection scheduling is shipped and
enabled by default in Chrome.
