Detecting Unwanted Synchronization in Java Programs

A program’s performance can be significantly improved by removing unwanted synchronization that causes time consuming tasks to run serially instead of in parallel. In large programs, especially those using libraries, it is usually difficult to manually detect unwanted synchronization. We describe an approach for automatically detecting unwanted synchronization in Java programs, including a detailed algorithm for computing the monitors involved in the synchronization. Our approach is highly scalable and is thus applicable to programs of realistic size. We have implemented this approach and tested it on several real problems, some of which are large. We present computational experience on both small and large examples, demonstrating that unwanted synchronization exists in practice, and that significant performance improvements are obtainable when unwanted synchronization is removed.

By: George Leeman, Aaron Kershenbaum, Larry Koved, Darrell Reimer

Published in: RC22552 in 2002

LIMITED DISTRIBUTION NOTICE:

This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.

rc22552.PDF

Questions about this service can be mailed to reports@us.ibm.com .