Gary Sevitsky

dblp:22/404 · DBLP profile ↗
← Back
12ranked-venue papers
0as first author
0since 2021 · last 2014
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 11Systems, architecture and hardware · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Program analysis · 75% Empirical software engineering · 9% Runtime systems and virtual machines · 8%

Topics — the 10 heaviest of 13, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
dynamic analysis
0.552014
Scalable Runtime Bloat Detection Using Abstract Dynamic Slicing · ACM Trans. Softw. Eng. Methodol. 2014
Finding low-utility data structures · PLDI 2010
Go with the flow: profiling copies to find runtime bloat · PLDI 2009
Program analysis › dynamic analysis
runtime bloat detection
0.432014
Scalable Runtime Bloat Detection Using Abstract Dynamic Slicing · ACM Trans. Softw. Eng. Methodol. 2014
Finding low-utility data structures · PLDI 2010
Go with the flow: profiling copies to find runtime bloat · PLDI 2009
Program analysis › dynamic analysis
profiling
0.222010
Finding low-utility data structures · PLDI 2010
Go with the flow: profiling copies to find runtime bloat · PLDI 2009
Empirical software engineering › software economics
cost-benefit analysis
0.212014
Scalable Runtime Bloat Detection Using Abstract Dynamic Slicing · ACM Trans. Softw. Eng. Methodol. 2014
Program analysis › dynamic analysis
dynamic slicing
0.212014
Scalable Runtime Bloat Detection Using Abstract Dynamic Slicing · ACM Trans. Softw. Eng. Methodol. 2014
Program analysis › static analysis › pointer analysis
escape analysis
0.222008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008
Blended analysis for performance understanding of framework-based applications · ISSTA 2007
Program analysis
static analysis
0.112008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008
Runtime systems and virtual machines › runtime memory management
memory bloat
0.112007
The causes of bloat, the limits of health · OOPSLA 2007
Software maintenance and evolution
technical debt
0.112007
The causes of bloat, the limits of health · OOPSLA 2007
Operating systems
workload characterization
0.012008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008

Methods — techniques the papers use, named apart from their topics

profiling · 0.2runtime dependence graph · 0.2bounded abstract domains · 0.2blended escape analysis · 0.1abstract interpretation · 0.1static analysis · 0.1escape analysis · 0.1dynamic analysis · 0.1blended analysis · 0.1
YearPublicationVenuePosition
2014 Scalable Runtime Bloat Detection Using Abstract Dynamic Slicing
abstract
Many large-scale Java applications suffer from runtime bloat. They execute large volumes of methods and create many temporary objects, all to execute relatively simple operations. There are large opportunities for performance optimizations in these applications, but most are being missed by existing optimization and tooling technology. While JIT optimizations struggle for a few percent improvement, performance experts analyze deployed applications and regularly find gains of 2× or more. Finding such big gains is difficult, for both humans and compilers, because of the diffuse nature of runtime bloat. Time is spread thinly across calling contexts, making it difficult to judge how to improve performance. Our experience shows that, in order to identify large performance bottlenecks in a program, it is more important to understand its dynamic dataflow than traditional performance metrics, such as running time. This article presents a general framework for designing and implementing scalable analysis algorithms to find causes of bloat in Java programs. At the heart of this framework is a generalized form of runtime dependence graph computed by abstract dynamic slicing , a semantics-aware technique that achieves high scalability by performing dynamic slicing over bounded abstract domains. The framework is instantiated to create two independent dynamic analyses, copy profiling and cost-benefit analysis , that help programmers identify performance bottlenecks by identifying, respectively, high-volume copy activities and data structures that have high construction cost but low benefit for the forward execution. We have successfully applied these analyses to large-scale and long-running Java applications. We show that both analyses are effective at detecting inefficient operations that can be optimized for better performance. We also demonstrate that the general framework is flexible enough to be instantiated for dynamic analyses in a variety of application domains.
Guoqing Harry Xu, Nick Mitchell, Matthew Arnold, Atanas Rountev, Edith Schonberg, Gary Sevitsky
ACM Trans. Softw. Eng. Methodol.6
2011 Patterns of Memory Inefficiency
Adriana E. Chis, Nick Mitchell, Edith Schonberg, Gary Sevitsky, Patrick O'Sullivan, Trevor Parsons, John Murphy 0001
ECOOP4
2010 Finding low-utility data structures
abstract
Many opportunities for easy, big-win, program optimizations are missed by compilers. This is especially true in highly layered Java applications. Often at the heart of these missed optimization opportunities lie computations that, with great expense, produce data values that have little impact on the program's final output. Constructing a new date formatter to format every date, or populating a large set full of expensively constructed structures only to check its size: these involve costs that are out of line with the benefits gained. This disparity between the formation costs and accrued benefits of data structures is at the heart of much runtime bloat.
Guoqing Harry Xu, Nick Mitchell, Matthew Arnold, Atanas Rountev, Edith Schonberg, Gary Sevitsky
PLDI6
2009 Making Sense of Large Heaps
Nick Mitchell, Edith Schonberg, Gary Sevitsky
ECOOP3
2009 Go with the flow: profiling copies to find runtime bloat
abstract
Many large-scale Java applications suffer from runtime bloat. They execute large volumes of methods, and create many temporary objects, all to execute relatively simple operations. There are large opportunities for performance optimizations in these applications, but most are being missed by existing optimization and tooling technology. While JIT optimizations struggle for a few percent, performance experts analyze deployed applications and regularly find gains of 2x or more.
Guoqing Harry Xu, Matthew Arnold, Nick Mitchell, Atanas Rountev, Gary Sevitsky
PLDI5
2008 A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications
abstract
Framework-intensive applications (e.g., Web applications) heavily use temporary data structures, often resulting in performance bot-tlenecks. This paper presents an optimized blended escape analysis to approximate object lifetimes and thus, to identify these tempo-raries and their uses. Empirical results show that this optimized analysis on average prunes 37 % of the basic blocks in our bench-marks, and achieves a speedup of up to 29 times compared to the original analysis. Newly defined metrics quantify key properties of temporary data structures and their uses. A detailed empirical eval-uation offers the first characterization of temporaries in framework-intensive applications. The results show that temporary data struc-tures can include up to 12 distinct object types and can traverse through as many as 14 method invocations before being captured.
Bruno Dufour, Barbara G. Ryder, Gary Sevitsky
SIGSOFT FSE3
2007 Blended analysis for performance understanding of framework-based applications
abstract
This paper defines a new analysis paradigm, blended program analysis, that enables practical, effective analysis of large framework-based Java applications for performance understanding. Blended analysis combines a dynamic representation of the program calling structure, with a static analysis applied to a region of that calling structure with observed performance problems. A blended escape analysis is presented which enables approximation of object effective lifetimes, to facilitate explanation of the usage of newly created objects in a program region. Performance bottlenecks stemming from overuse of temporary structures are common in framework-based applications. Metrics are introduced to expose how, in aggregate, these applications make use of new objects. Results of empirical experiments with the Trade benchmark are presented. A case study demonstrates how results from a blended escape analysis can help locate, in a region which calls 223 distinct methods, the single call path responsible for a performance problem involving objects created at 9 distinct sites and as far as 6 call levels away.
Bruno Dufour, Barbara G. Ryder, Gary Sevitsky
ISSTA3
2007 The causes of bloat, the limits of health
abstract
Applications often have large runtime memory requirements. In some cases, large memory footprint helps accomplish an important functional, performance, or engineering requirement. A large cache,for example, may ameliorate a pernicious performance problem. In general, however, finding a good balance between memory consumption and other requirements is quite challenging. To do so, the development team must distinguish effective from excessive use of memory.
Nick Mitchell, Gary Sevitsky
OOPSLA2
2006 Modeling Runtime Behavior in Framework-Based Applications
Nick Mitchell, Gary Sevitsky, Harini Srinivasan
ECOOP2
2003 LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications
Nick Mitchell, Gary Sevitsky
ECOOP2
2000 Visualizing reference patterns for solving memory leaks in Java
abstract
Many Java programmers believe that they do not have to worry about memory management because of automatic garbage collection. In fact, many Java programs run out of memory unexpectedly after performing a number of operations. A memory leak in Java is caused when an object that is no longer needed cannot be reclaimed because another object is still referring to it. Memory leaks can be difficult to solve, since the complexity of most programs prevents us from manually verifying the validity of every reference. In this paper we show a new methodology for finding the causes of memory leaks. We have identified a basic memory leak scenario which fits many important cases. In this scenario, we allow the programmer to identify a period of time in which temporary objects are expected to be created and released. Using this information we are able to identify objects that persist beyond this period and the references which are holding on to them. Scaling this methodology to real-world systems brings additional challenges. We propose a novel combination of visual syntax and reference pattern extraction to manage this additional complexity. We also describe how these techniques can be applied to a wider class of memory problems, including the exploration of large data structures. These techniques have been implemented and have been proven successful on large projects. Copyright © 2000 John Wiley & Sons, Ltd.
Wim De Pauw, Gary Sevitsky
Concurr. Pract. Exp.2
1999 Visualizing Reference Patterns for Solving Memory Leaks in Java
Wim De Pauw, Gary Sevitsky
ECOOP2