Fri 17 Jun 2016 09:00 - 09:30 at Grand Ballroom Santa Ynez - Memory Management Chair(s): Sam Guyer

Efficient garbage collection is of increasing importance in today’s managed language runtime systems to provide low latency, low memory consumption, and high throughput. Garbage collection may pause the application for many milliseconds to identify live memory, free-up 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 become observable to the user, which degrades 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 the Blink task scheduler of Chrome and in V8, an open-source, production JavaScript virtual machine running within Chrome. We present performance results on various benchmarks running popular websites and show that idle time garbage collection scheduling can significantly improve latency and memory consumption. Additionally, we introduce a new metric called frame time discrepancy to quantify the quality of the user experience and present superior results. Idle time garbage collection is shipped and enabled in Chrome since version 38.