Static Analyses for Eliminating Unnecessary Synchronization from Java Programs View Full Text


Ontology type: schema:Chapter      Open Access: True


Chapter Info

DATE

1999-10-01

AUTHORS

Jonathan Aldrich , Craig Chambers , Emin Gun Sirer , Susan Eggers

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

PAGES

19-38

Identifiers

URI

http://scigraph.springernature.com/pub.10.1007/3-540-48294-6_2

DOI

http://dx.doi.org/10.1007/3-540-48294-6_2

DIMENSIONS

https://app.dimensions.ai/details/publication/pub.1045898633


Indexing Status Check whether this publication has been indexed by Scopus and Web Of Science using the SN Indexing Status Tool
Incoming Citations Browse incoming citations for this publication using opencitations.net

JSON-LD is the canonical representation for SciGraph data.

TIP: You can open this SciGraph record using an external JSON-LD service: JSON-LD Playground Google SDTT

[
  {
    "@context": "https://springernature.github.io/scigraph/jsonld/sgcontext.json", 
    "about": [
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/08", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Information and Computing Sciences", 
        "type": "DefinedTerm"
      }, 
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/0803", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Computer Software", 
        "type": "DefinedTerm"
      }
    ], 
    "author": [
      {
        "affiliation": {
          "alternateName": "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA", 
          "id": "http://www.grid.ac/institutes/grid.34477.33", 
          "name": [
            "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Aldrich", 
        "givenName": "Jonathan", 
        "id": "sg:person.012051516632.46", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.012051516632.46"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA", 
          "id": "http://www.grid.ac/institutes/grid.34477.33", 
          "name": [
            "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Chambers", 
        "givenName": "Craig", 
        "id": "sg:person.010633134465.58", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.010633134465.58"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA", 
          "id": "http://www.grid.ac/institutes/grid.34477.33", 
          "name": [
            "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Sirer", 
        "givenName": "Emin Gun", 
        "id": "sg:person.07757027131.87", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.07757027131.87"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA", 
          "id": "http://www.grid.ac/institutes/grid.34477.33", 
          "name": [
            "Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Eggers", 
        "givenName": "Susan", 
        "id": "sg:person.015654662057.48", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015654662057.48"
        ], 
        "type": "Person"
      }
    ], 
    "datePublished": "1999-10-01", 
    "datePublishedReg": "1999-10-01", 
    "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\u201310% 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.", 
    "editor": [
      {
        "familyName": "Cortesi", 
        "givenName": "Agostino", 
        "type": "Person"
      }, 
      {
        "familyName": "Fil\u00e9", 
        "givenName": "Gilberto", 
        "type": "Person"
      }
    ], 
    "genre": "chapter", 
    "id": "sg:pub.10.1007/3-540-48294-6_2", 
    "inLanguage": "en", 
    "isAccessibleForFree": true, 
    "isPartOf": {
      "isbn": [
        "978-3-540-66459-8", 
        "978-3-540-48294-9"
      ], 
      "name": "Static Analysis", 
      "type": "Book"
    }, 
    "keywords": [
      "Java programs", 
      "unnecessary synchronization", 
      "manual optimization", 
      "total execution time", 
      "static analysis", 
      "reusable programs", 
      "Java applications", 
      "execution time", 
      "benchmark applications", 
      "multithreaded code", 
      "single thread", 
      "partial implementation", 
      "programmers", 
      "lock operation", 
      "synchronization", 
      "threads", 
      "overhead", 
      "monitor", 
      "optimization", 
      "Java", 
      "multiple times", 
      "applications", 
      "benchmarks", 
      "implementation", 
      "code", 
      "set", 
      "sets of analyses", 
      "performance", 
      "program", 
      "operation", 
      "time", 
      "analysis", 
      "hand", 
      "cases", 
      "potential", 
      "paper", 
      "approach", 
      "unnecessary lock operations", 
      "Such manual optimizations", 
      "hand-optimized benchmarks", 
      "reusable multithreaded code"
    ], 
    "name": "Static Analyses for Eliminating Unnecessary Synchronization from Java Programs", 
    "pagination": "19-38", 
    "productId": [
      {
        "name": "dimensions_id", 
        "type": "PropertyValue", 
        "value": [
          "pub.1045898633"
        ]
      }, 
      {
        "name": "doi", 
        "type": "PropertyValue", 
        "value": [
          "10.1007/3-540-48294-6_2"
        ]
      }
    ], 
    "publisher": {
      "name": "Springer Nature", 
      "type": "Organisation"
    }, 
    "sameAs": [
      "https://doi.org/10.1007/3-540-48294-6_2", 
      "https://app.dimensions.ai/details/publication/pub.1045898633"
    ], 
    "sdDataset": "chapters", 
    "sdDatePublished": "2021-12-01T20:08", 
    "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
    "sdPublisher": {
      "name": "Springer Nature - SN SciGraph project", 
      "type": "Organization"
    }, 
    "sdSource": "s3://com-springernature-scigraph/baseset/20211201/entities/gbq_results/chapter/chapter_400.jsonl", 
    "type": "Chapter", 
    "url": "https://doi.org/10.1007/3-540-48294-6_2"
  }
]
 

Download the RDF metadata as:  json-ld nt turtle xml License info

HOW TO GET THIS DATA PROGRAMMATICALLY:

JSON-LD is a popular format for linked data which is fully compatible with JSON.

curl -H 'Accept: application/ld+json' 'https://scigraph.springernature.com/pub.10.1007/3-540-48294-6_2'

N-Triples is a line-based linked data format ideal for batch operations.

curl -H 'Accept: application/n-triples' 'https://scigraph.springernature.com/pub.10.1007/3-540-48294-6_2'

Turtle is a human-readable linked data format.

curl -H 'Accept: text/turtle' 'https://scigraph.springernature.com/pub.10.1007/3-540-48294-6_2'

RDF/XML is a standard XML format for linked data.

curl -H 'Accept: application/rdf+xml' 'https://scigraph.springernature.com/pub.10.1007/3-540-48294-6_2'


 

This table displays all metadata directly associated to this object as RDF triples.

127 TRIPLES      23 PREDICATES      66 URIs      59 LITERALS      7 BLANK NODES

Subject Predicate Object
1 sg:pub.10.1007/3-540-48294-6_2 schema:about anzsrc-for:08
2 anzsrc-for:0803
3 schema:author N1de5f5fd2ded4b7cb3e0cedc738d4ef8
4 schema:datePublished 1999-10-01
5 schema:datePublishedReg 1999-10-01
6 schema: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.
7 schema:editor Na0670c1d3efe40beabd574cca4b82eed
8 schema:genre chapter
9 schema:inLanguage en
10 schema:isAccessibleForFree true
11 schema:isPartOf Ned6608c995094f61adb1d47a7bd3545d
12 schema:keywords Java
13 Java applications
14 Java programs
15 Such manual optimizations
16 analysis
17 applications
18 approach
19 benchmark applications
20 benchmarks
21 cases
22 code
23 execution time
24 hand
25 hand-optimized benchmarks
26 implementation
27 lock operation
28 manual optimization
29 monitor
30 multiple times
31 multithreaded code
32 operation
33 optimization
34 overhead
35 paper
36 partial implementation
37 performance
38 potential
39 program
40 programmers
41 reusable multithreaded code
42 reusable programs
43 set
44 sets of analyses
45 single thread
46 static analysis
47 synchronization
48 threads
49 time
50 total execution time
51 unnecessary lock operations
52 unnecessary synchronization
53 schema:name Static Analyses for Eliminating Unnecessary Synchronization from Java Programs
54 schema:pagination 19-38
55 schema:productId N7fd6f4429b1047c48763e43dc1ca510e
56 N9af231cf75f2408e81f314aecbf0619f
57 schema:publisher Nb2555bff4ba14105b08757160aa2ae3d
58 schema:sameAs https://app.dimensions.ai/details/publication/pub.1045898633
59 https://doi.org/10.1007/3-540-48294-6_2
60 schema:sdDatePublished 2021-12-01T20:08
61 schema:sdLicense https://scigraph.springernature.com/explorer/license/
62 schema:sdPublisher N8d38210a26d248bfa1a8d6cf572903fe
63 schema:url https://doi.org/10.1007/3-540-48294-6_2
64 sgo:license sg:explorer/license/
65 sgo:sdDataset chapters
66 rdf:type schema:Chapter
67 N074545ee149b4f3bbc72a4f7c62e11f8 rdf:first N4b4d0d4718df49f3af4f0fb3e4c71b5d
68 rdf:rest rdf:nil
69 N1de5f5fd2ded4b7cb3e0cedc738d4ef8 rdf:first sg:person.012051516632.46
70 rdf:rest Nb7213a53f47e4e0c9ff26c6d97f2a991
71 N356b8a1067924108a1dbdc5166b58c4a rdf:first sg:person.015654662057.48
72 rdf:rest rdf:nil
73 N4b4d0d4718df49f3af4f0fb3e4c71b5d schema:familyName Filé
74 schema:givenName Gilberto
75 rdf:type schema:Person
76 N591d8bd6e5e542e3b4067df94d154d35 schema:familyName Cortesi
77 schema:givenName Agostino
78 rdf:type schema:Person
79 N629b47731b314538bcaf887271180004 rdf:first sg:person.07757027131.87
80 rdf:rest N356b8a1067924108a1dbdc5166b58c4a
81 N7fd6f4429b1047c48763e43dc1ca510e schema:name doi
82 schema:value 10.1007/3-540-48294-6_2
83 rdf:type schema:PropertyValue
84 N8d38210a26d248bfa1a8d6cf572903fe schema:name Springer Nature - SN SciGraph project
85 rdf:type schema:Organization
86 N9af231cf75f2408e81f314aecbf0619f schema:name dimensions_id
87 schema:value pub.1045898633
88 rdf:type schema:PropertyValue
89 Na0670c1d3efe40beabd574cca4b82eed rdf:first N591d8bd6e5e542e3b4067df94d154d35
90 rdf:rest N074545ee149b4f3bbc72a4f7c62e11f8
91 Nb2555bff4ba14105b08757160aa2ae3d schema:name Springer Nature
92 rdf:type schema:Organisation
93 Nb7213a53f47e4e0c9ff26c6d97f2a991 rdf:first sg:person.010633134465.58
94 rdf:rest N629b47731b314538bcaf887271180004
95 Ned6608c995094f61adb1d47a7bd3545d schema:isbn 978-3-540-48294-9
96 978-3-540-66459-8
97 schema:name Static Analysis
98 rdf:type schema:Book
99 anzsrc-for:08 schema:inDefinedTermSet anzsrc-for:
100 schema:name Information and Computing Sciences
101 rdf:type schema:DefinedTerm
102 anzsrc-for:0803 schema:inDefinedTermSet anzsrc-for:
103 schema:name Computer Software
104 rdf:type schema:DefinedTerm
105 sg:person.010633134465.58 schema:affiliation grid-institutes:grid.34477.33
106 schema:familyName Chambers
107 schema:givenName Craig
108 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.010633134465.58
109 rdf:type schema:Person
110 sg:person.012051516632.46 schema:affiliation grid-institutes:grid.34477.33
111 schema:familyName Aldrich
112 schema:givenName Jonathan
113 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.012051516632.46
114 rdf:type schema:Person
115 sg:person.015654662057.48 schema:affiliation grid-institutes:grid.34477.33
116 schema:familyName Eggers
117 schema:givenName Susan
118 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015654662057.48
119 rdf:type schema:Person
120 sg:person.07757027131.87 schema:affiliation grid-institutes:grid.34477.33
121 schema:familyName Sirer
122 schema:givenName Emin Gun
123 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.07757027131.87
124 rdf:type schema:Person
125 grid-institutes:grid.34477.33 schema:alternateName Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA
126 schema:name Department of Computer Science and Engineering, University of Washington, Box 352350, 98195, Seattle, WA, USA
127 rdf:type schema:Organization
 




Preview window. Press ESC to close (or click here)


...