Jochen Eisinger
Research Areas
Authored Publications
Sort By
Cross-Component Garbage Collection
Ulan Degenbaev
Proceedings of the ACM on Programming Languages, 2 Issue OOPSLA (2018), 151:1-151:24
Preview abstract
Embedding a modern language runtime as a component in a larger software system is popular these days. Communication between these systems often requires keeping references to each others' objects. In this paper we present and discuss the problem of cross-component memory management where reference cycles across component boundaries may lead to memory leaks and premature reclamation of objects may lead to dangling cross-component references. We provide a generic algorithm for effective, efficient, and safe garbage collection over component boundaries, which we call cross-component tracing. We designed and implemented cross-component tracing in the Chrome web browser where the JavaScript virtual machine V8 is embedded into the rendering engine Blink. Cross-component tracing from V8's JavaScript heap to Blink's C++ heap improves garbage collection latency and eliminates long-standing memory leaks for real websites in Chrome. We show how cross-component tracing can help web developers to reason about reachability and retainment of objects spanning both V8 and Blink components based on Chrome's heap snapshot memory tool. Cross-component tracing was enabled by default for all websites in Chrome version 57 and is also deployed in other widely used software systems such as Opera, Cobalt, and Electron.
View details
Idle Time Garbage Collection Scheduling
Ulan Degenbaev
Manfred Ernst
37th annual ACM SIGPLAN conference on Programming Language Design and Implementation, ACM, New York, NY, USA (2016), pp. 570-583
Preview 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.
View details
Transparency and Choice: Protecting Consumer Privacy in an Online World
Alma Whitten
Sean Harvey
Ian Fette
Betsy Masiello
Jane Horvath
W3C Workshop on Web Tracking and User Privacy, W3C (2011), pp. 3
Preview abstract
There have been concerns raised recently about online tracking. There are a variety of
mechanisms by which data is collected online, and for which it is used, and it is unclear which
of these are intended to be addressed by “Do Not Track” mechanisms. Tracking is often data
collection that helps ensure the security and integrity of data, determines relevancy of served
content and also helps create innovation opportunities. This value ought to be central in
any “Do Not Track” discussions.
View details
Preview abstract
Google Chrome has implemented a number of
HTML5 APIs, including the Geolocation
API and various storage APIs. In this paper we discuss some of our experiences on the
Google Chrome team in implementing these
APIs, as well as our thoughts around privacy
for new APIs we are considering implementing. Specifically, we discuss our ideas of how
providing access to things such as speech,
web cameras, and filesystems can be done in
ways that are understandable and in the natural flow of users.
View details