Stack allocation and synchronization optimizations for Java']Java using escape analysis

被引:43
|
作者
Choi, JD
Gupta, M
Serrano, MJ
Sreedhar, VC
Midkiff, SP
机构
[1] IBM Corp, Thomas J Watson Res Ctr, Yorktown Hts, NY 10598 USA
[2] Purdue Univ, Sch Elect & Comp Engn, W Lafayette, IN 47907 USA
关键词
algorithms; languages; connection graphs; escape analysis; points-to graph;
D O I
10.1145/945885.945892
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
This article presents an escape analysis framework for Java to determine (1) if an object is not reachable after its method of creation returns, allowing the object to be allocated on the stack, and (2) if an object is reachable only from a single thread during its lifetime, allowing unnecessary synchronization operations on that object to be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be succinctly summarized for each method such that the same summary information may be used in different calling contexts without introducing imprecision into the analysis. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the nonescaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in the user code in three out of the ten benchmarks (with a median of 19%); 11% to 92% of all mutex lock operations are eliminated in those 10 programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333-MHz PowerPC workstation with 512 MB memory.
引用
收藏
页码:876 / 910
页数:35
相关论文
共 50 条
  • [41] Analysis of Java']Java Programs using Joana and Java']Java SDG API
    Kumar, Ranjan
    Panda, Subhrakanta
    Mohapatra, Durga Prasad
    [J]. 2015 INTERNATIONAL CONFERENCE ON ADVANCES IN COMPUTING, COMMUNICATIONS AND INFORMATICS (ICACCI), 2015, : 2402 - 2408
  • [42] Towards Type-Based Optimizations in Distributed Applications Using ABS and JAVA']JAVA 8
    Serbanescu, Vlad
    Nagarajagowda, Chetan
    Azadbakht, Keyvan
    de Boer, Frank
    Nobakht, Behrooz
    [J]. ADAPTIVE RESOURCE MANAGEMENT AND SCHEDULING FOR CLOUD COMPUTING (ARMS-CC 2014), 2014, 8907 : 103 - 112
  • [43] Features that Predict the Acceptability of Java']Java and Java']JavaScript Answers on Stack Overflow
    Omondiagbe, Osayande P.
    Licorish, Sherlock A.
    MacDonell, Stephen G.
    [J]. PROCEEDINGS OF EASE 2019 - EVALUATION AND ASSESSMENT IN SOFTWARE ENGINEERING, 2019, : 101 - 110
  • [44] Analyzing Stack Flows to Compare Java']Java Programs
    Lim, Hyun-il
    Han, Taisook
    [J]. IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS, 2012, E95D (02): : 565 - 576
  • [45] Private Memory Allocation Analysis for Safety-Critical Java']Java
    Dalsgaard, Andreas E.
    Hansen, Rene Rydhof
    Schoeberl, Martin
    [J]. PROCEEDINGS OF THE 10TH INTERNATIONAL WORKSHOP ON JAVA TECHNOLOGIES FOR REAL-TIME AND EMBEDDED SYSTEMS, 2012, : 9 - 17
  • [46] Design and implementation of a havi stack with Linux and Java']Java
    Hsu, KW
    Chen, CL
    Yu, TY
    Li, WC
    [J]. PROCEEDINGS OF THE 3RD IEEE INTERNATIONAL SYMPOSIUM ON SIGNAL PROCESSING AND INFORMATION TECHNOLOGY, 2003, : 66 - 69
  • [47] Thin locks: Featherweight synchronization for Java']Java
    Bacon, DF
    Konuru, R
    Murthy, C
    Serrano, M
    [J]. ACM SIGPLAN NOTICES, 1998, 33 (05) : 258 - 268
  • [48] A Java']Java framework for mobile data synchronization
    Cohen, NH
    [J]. COOPERATIVE INFORMATION SYSTEMS, PROCEEDINGS, 2000, 1901 : 287 - 298
  • [49] An enhanced thread synchronization mechanism for Java']Java
    Chiao, HT
    Yuan, SM
    [J]. SOFTWARE-PRACTICE & EXPERIENCE, 2001, 31 (07): : 667 - 695
  • [50] Online Feedback-Directed Optimizations for Parallel Java']Java Code
    Noll, Albert
    Gross, Thomas
    [J]. ACM SIGPLAN NOTICES, 2013, 48 (10) : 713 - 728