Removing Unnecessary Synchronization in Java

  • Authors:
  • Jeff Bogda;Urs Holzle

  • Affiliations:
  • -;-

  • Venue:
  • Removing Unnecessary Synchronization in Java
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

Java programs perform many synchronization operations on data structures. Some of these synchronizations are unnecessary; in particular, if an object is reachable only by a single thread, concurrent access is impossible and no synchronization is needed. We describe a flow-insensitive, context-sensitive data-flow analysis that finds such situations and a global optimizing transformation that eliminates synchronizations on these objects. For every program in our suite of ten Java benchmarks consisting of SPECjvm98 and others, our system optimizes over 90% of the alias sets containing at least one synchronized object. As a result, the dynamic frequency of synchronizations is reduced by up to 99%. For two benchmarks that perform synchronizations very frequently, this optimization leads to speedups of 36% and 20%, respectively.