Static Analyses for Eliminating Unnecessary Synchronization from Java Programs

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...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Aldrich, Jonathan, Chambers, Craig, Sirer, Emin Gun, Eggers, Susan
Format: Buchkapitel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 38
container_issue
container_start_page 19
container_title
container_volume
creator Aldrich, Jonathan
Chambers, Craig
Sirer, Emin Gun
Eggers, Susan
description 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 synchronization overhead and improves running time by up to 5% for several already hand-optimized benchmarks. Thus, our automated analyses have the potential to significantly improve the performance of Java applications while enabling programmers to design simpler and more reusable multithreaded code.
doi_str_mv 10.1007/3-540-48294-6_2
format Book Chapter
fullrecord <record><control><sourceid>pascalfrancis_sprin</sourceid><recordid>TN_cdi_pascalfrancis_primary_1829295</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>1829295</sourcerecordid><originalsourceid>FETCH-LOGICAL-p263t-ff140194fc70727ae47e39cfd0c8108557271a20a3102b1289f5d16eaa4d739c3</originalsourceid><addsrcrecordid>eNotkEtPAjEUhesrEZG12y7cVvuadrokBHyEqAmybi6lxdGZDmmJCf56K3g3N_eck5uTD6EbRu8YpfpekEpSImtuJFGWn6ArUYTDrU7RgCnGiBDSnB0NpWRlzDkaUEE5MVqKSzTK-ZOWEVzVtRmgl8UOdo3D4wjtPvuMQ5_wtG26JhY9bvAyRu98zpD2eLGP7iP1sfkpXh9xSH2Hn-Eb8FvqNwm6fI0uArTZj_73EC1n0_fJI5m_PjxNxnOy5UrsSAhMUmZkcJpqrsFL7YVxYU1dzWhdVUVkwCkIRvmK8dqEas2UB5BrXYJiiG6Pf7eQHbQhQXRNttvUdKWoZQUJN1WJkWMsFydufLKrvv_KllH7B9QKWzDZA0BbgIpfY0ljug</addsrcrecordid><sourcetype>Index Database</sourcetype><iscdi>true</iscdi><recordtype>book_chapter</recordtype></control><display><type>book_chapter</type><title>Static Analyses for Eliminating Unnecessary Synchronization from Java Programs</title><source>Springer Books</source><creator>Aldrich, Jonathan ; Chambers, Craig ; Sirer, Emin Gun ; Eggers, Susan</creator><contributor>Filé, Gilberto ; Cortesi, Agostino</contributor><creatorcontrib>Aldrich, Jonathan ; Chambers, Craig ; Sirer, Emin Gun ; Eggers, Susan ; Filé, Gilberto ; Cortesi, Agostino</creatorcontrib><description>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 synchronization overhead and improves running time by up to 5% for several already hand-optimized benchmarks. Thus, our automated analyses have the potential to significantly improve the performance of Java applications while enabling programmers to design simpler and more reusable multithreaded code.</description><identifier>ISSN: 0302-9743</identifier><identifier>ISBN: 3540664599</identifier><identifier>ISBN: 9783540664598</identifier><identifier>EISSN: 1611-3349</identifier><identifier>EISBN: 3540482946</identifier><identifier>EISBN: 9783540482949</identifier><identifier>DOI: 10.1007/3-540-48294-6_2</identifier><language>eng</language><publisher>Berlin, Heidelberg: Springer Berlin Heidelberg</publisher><subject>Applied sciences ; Computer science; control theory; systems ; Exact sciences and technology ; Java Program ; Program Language Design ; Software ; Software engineering ; Synchronization Overhead ; Synchronization Point ; Total Execution Time</subject><ispartof>Lecture notes in computer science, 1999, p.19-38</ispartof><rights>Springer-Verlag Berlin Heidelberg 1999</rights><rights>1999 INIST-CNRS</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><relation>Lecture Notes in Computer Science</relation></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/3-540-48294-6_2$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/3-540-48294-6_2$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>309,310,777,778,782,787,788,791,4038,4039,27908,38238,41425,42494</link.rule.ids><backlink>$$Uhttp://pascal-francis.inist.fr/vibad/index.php?action=getRecordDetail&amp;idt=1829295$$DView record in Pascal Francis$$Hfree_for_read</backlink></links><search><contributor>Filé, Gilberto</contributor><contributor>Cortesi, Agostino</contributor><creatorcontrib>Aldrich, Jonathan</creatorcontrib><creatorcontrib>Chambers, Craig</creatorcontrib><creatorcontrib>Sirer, Emin Gun</creatorcontrib><creatorcontrib>Eggers, Susan</creatorcontrib><title>Static Analyses for Eliminating Unnecessary Synchronization from Java Programs</title><title>Lecture notes in computer science</title><description>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 synchronization overhead and improves running time by up to 5% for several already hand-optimized benchmarks. Thus, our automated analyses have the potential to significantly improve the performance of Java applications while enabling programmers to design simpler and more reusable multithreaded code.</description><subject>Applied sciences</subject><subject>Computer science; control theory; systems</subject><subject>Exact sciences and technology</subject><subject>Java Program</subject><subject>Program Language Design</subject><subject>Software</subject><subject>Software engineering</subject><subject>Synchronization Overhead</subject><subject>Synchronization Point</subject><subject>Total Execution Time</subject><issn>0302-9743</issn><issn>1611-3349</issn><isbn>3540664599</isbn><isbn>9783540664598</isbn><isbn>3540482946</isbn><isbn>9783540482949</isbn><fulltext>true</fulltext><rsrctype>book_chapter</rsrctype><creationdate>1999</creationdate><recordtype>book_chapter</recordtype><recordid>eNotkEtPAjEUhesrEZG12y7cVvuadrokBHyEqAmybi6lxdGZDmmJCf56K3g3N_eck5uTD6EbRu8YpfpekEpSImtuJFGWn6ArUYTDrU7RgCnGiBDSnB0NpWRlzDkaUEE5MVqKSzTK-ZOWEVzVtRmgl8UOdo3D4wjtPvuMQ5_wtG26JhY9bvAyRu98zpD2eLGP7iP1sfkpXh9xSH2Hn-Eb8FvqNwm6fI0uArTZj_73EC1n0_fJI5m_PjxNxnOy5UrsSAhMUmZkcJpqrsFL7YVxYU1dzWhdVUVkwCkIRvmK8dqEas2UB5BrXYJiiG6Pf7eQHbQhQXRNttvUdKWoZQUJN1WJkWMsFydufLKrvv_KllH7B9QKWzDZA0BbgIpfY0ljug</recordid><startdate>1999</startdate><enddate>1999</enddate><creator>Aldrich, Jonathan</creator><creator>Chambers, Craig</creator><creator>Sirer, Emin Gun</creator><creator>Eggers, Susan</creator><general>Springer Berlin Heidelberg</general><general>Springer</general><scope>IQODW</scope></search><sort><creationdate>1999</creationdate><title>Static Analyses for Eliminating Unnecessary Synchronization from Java Programs</title><author>Aldrich, Jonathan ; Chambers, Craig ; Sirer, Emin Gun ; Eggers, Susan</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-p263t-ff140194fc70727ae47e39cfd0c8108557271a20a3102b1289f5d16eaa4d739c3</frbrgroupid><rsrctype>book_chapters</rsrctype><prefilter>book_chapters</prefilter><language>eng</language><creationdate>1999</creationdate><topic>Applied sciences</topic><topic>Computer science; control theory; systems</topic><topic>Exact sciences and technology</topic><topic>Java Program</topic><topic>Program Language Design</topic><topic>Software</topic><topic>Software engineering</topic><topic>Synchronization Overhead</topic><topic>Synchronization Point</topic><topic>Total Execution Time</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Aldrich, Jonathan</creatorcontrib><creatorcontrib>Chambers, Craig</creatorcontrib><creatorcontrib>Sirer, Emin Gun</creatorcontrib><creatorcontrib>Eggers, Susan</creatorcontrib><collection>Pascal-Francis</collection></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Aldrich, Jonathan</au><au>Chambers, Craig</au><au>Sirer, Emin Gun</au><au>Eggers, Susan</au><au>Filé, Gilberto</au><au>Cortesi, Agostino</au><format>book</format><genre>bookitem</genre><ristype>CHAP</ristype><atitle>Static Analyses for Eliminating Unnecessary Synchronization from Java Programs</atitle><btitle>Lecture notes in computer science</btitle><seriestitle>Lecture Notes in Computer Science</seriestitle><date>1999</date><risdate>1999</risdate><spage>19</spage><epage>38</epage><pages>19-38</pages><issn>0302-9743</issn><eissn>1611-3349</eissn><isbn>3540664599</isbn><isbn>9783540664598</isbn><eisbn>3540482946</eisbn><eisbn>9783540482949</eisbn><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 synchronization overhead and improves running time by up to 5% for several already hand-optimized benchmarks. Thus, our automated analyses have the potential to significantly improve the performance of Java applications while enabling programmers to design simpler and more reusable multithreaded code.</abstract><cop>Berlin, Heidelberg</cop><pub>Springer Berlin Heidelberg</pub><doi>10.1007/3-540-48294-6_2</doi><tpages>20</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 0302-9743
ispartof Lecture notes in computer science, 1999, p.19-38
issn 0302-9743
1611-3349
language eng
recordid cdi_pascalfrancis_primary_1829295
source Springer Books
subjects Applied sciences
Computer science
control theory
systems
Exact sciences and technology
Java Program
Program Language Design
Software
Software engineering
Synchronization Overhead
Synchronization Point
Total Execution Time
title Static Analyses for Eliminating Unnecessary Synchronization from Java Programs
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-16T21%3A55%3A18IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-pascalfrancis_sprin&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.genre=bookitem&rft.atitle=Static%20Analyses%20for%20Eliminating%20Unnecessary%20Synchronization%20from%20Java%20Programs&rft.btitle=Lecture%20notes%20in%20computer%20science&rft.au=Aldrich,%20Jonathan&rft.date=1999&rft.spage=19&rft.epage=38&rft.pages=19-38&rft.issn=0302-9743&rft.eissn=1611-3349&rft.isbn=3540664599&rft.isbn_list=9783540664598&rft_id=info:doi/10.1007/3-540-48294-6_2&rft_dat=%3Cpascalfrancis_sprin%3E1829295%3C/pascalfrancis_sprin%3E%3Curl%3E%3C/url%3E&rft.eisbn=3540482946&rft.eisbn_list=9783540482949&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true