| | |
Summary: Static Analyses for Eliminating Unnecessary
Synchronization from Java Programs
Jonathan Aldrich, Craig Chambers, Emin Gun Sirer, and Susan Eggers
Department of Computer Science and Engineering
University of Washington
Box 352350
Seattle, WA 98195 USA
{jonal, chambers, egs, eggers}@cs.washington.edu
Abstract. This paper presents and evaluates a set of analyses designed to
reduce synchronization overhead in Java programs. Monitor-based
synchronization in Java often causes significant overhead, accounting for
5-10% of total execution time in our benchmark applications. To reduce this
overhead, programmers often try to eliminate unnecessary lock operations by
hand. Such manual optimizations are tedious, error-prone, and often result in
poorly structured and less reusable programs. Our approach replaces manual
optimizations with static analyses that automatically find and remove
unnecessary synchronization from Java programs. These analyses optimize
cases where a monitor is entered multiple times by a single thread, where one
monitor is nested within another, and where a monitor is accessible by only one
thread. A partial implementation of our analyses eliminates up to 70% of
|