Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Matthew Hertz is active.

Publication


Featured researches published by Matthew Hertz.


conference on object-oriented programming systems, languages, and applications | 2001

Pretenuring for Java

Stephen M. Blackburn; Sharad Singhai; Matthew Hertz; Kathryn S. McKinely; J. Eliot B. Moss

Pretenuring can reduce copying costs in garbage collectors by allocating long-lived objects into regions that the garbage collector with rarely, if ever, collect. We extend previous work on pretenuring as follows. (1) We produce pretenuring advice that is neutral with respect to the garbage collector algorithm and configuration. We thus can and do combine advice from different applications. We find that predictions using object lifetimes at each allocation site in Java prgroams are accurate, which simplifies the pretenuring implementation. (2) We gather and apply advice to applications and the Jalapeño JVM, a compiler and run-time system for Java written in Java. Our results demonstrate that building combined advice into Jalapeño from different application executions improves performance regardless of the application Jalapeño is compiling and executing. This build-time advice thus gives user applications some benefits of pretenuring without any application profiling. No previous work pretenures in the run-time system. (3) We find that application-only advice also improves performance, but that the combination of build-time and application-specific advice is almost always noticeably better. (4) Our same advice improves the performance of generational and Older First colleciton, illustrating that it is collector neutral.


conference on object oriented programming systems languages and applications | 2003

Connectivity-based garbage collection

Martin Hirzel; Amer Diwan; Matthew Hertz

We introduce a new family of connectivity-based garbage collectors ( Cbgc ) that are based on potential object-connectivity properties. The key feature of these collectors is that the placement of objects into partitions is determined by performing one of several forms of connectivity analyses on the program. This enables partial garbage collections, as in generational collectors, but without the need for any write barrier.The contributions of this paper are 1) a novel family of garbage collection algorithms based on object connectivity; 2) a detailed description of an instance of this family; and 3) an empirical evaluation of Cbgc using simulations. Simulations help explore a broad range of possibilities for Cbgc , ranging from simplistic ones that determine connectivity based on type information to oracular ones that use run-time information to determine connectivity. Our experiments with the oracular Cbgc configurations give an indication of the potential for Cbgc and also identify weaknesses in the realistic configurations. We found that even the simplistic implementations beat state-of-the-art generational collectors with respect to some metrics (pause times and memory footprint).


measurement and modeling of computer systems | 2002

Error-free garbage collection traces: how to cheat and not get caught

Matthew Hertz; Stephen M. Blackburn; J. Eliot B. Moss; Kathryn S. McKinley; Darko Stefanovic

Programmers are writing a large and rapidly growing number of programs in object-oriented languages such as Java that require garbage collection (GC). To explore the design and evaluation of GC algorithms quickly, researchers are using simulation based on traces of object allocation and lifetime behavior. The brute force method generates perfect traces using a whole-heap GC at every potential GC point in the program. Because this process is prohibitively expensive, researchers often use granulated traces by collecting only periodically, e.g., every 32K bytes of allocation.We extend the state of the art for simulating GC algorithms in two ways. First, we present a systematic methodology and results on the effects of trace granularity for a variety of copying GC algorithms. We show that trace granularity often distorts GC performance results compared with perfect traces, and that some GC algorithms are more sensitive to this effect than others. Second, we introduce and measure the performance of a new precise algorithm for generating GC traces which is over 800 times faster than the brute force method. Our algorithm, called Merlin, frequently timestamps objects and later uses the timestamps of dead objects to reconstruct precisely when they died. It performs only periodic garbage collections and achieves high accuracy at low cost, eliminating any reason to use granulated traces.


international symposium on memory management | 2004

Automatic heap sizing: taking real memory into account

Ting Yang; Matthew Hertz; Emery D. Berger; Scott F. Kaplan; J. Eliot B. Moss

Heap size has a huge impact on the performance of garbage collected applications. A heap that barely meets the applications needs causes excessive GC overhead, while a heap that exceeds physical memory induces paging. Choosing the best heap size <i>a priori</i> is impossible in multiprogrammed environments, where physical memory allocations to processes change constantly. We present an automatic heap-sizing algorithm applicable to different garbage collectors with only modest changes. It relies on an analytical model and on detailed information from the virtual memory manager. The model characterizes the relation between collection algorithm, heap size, and footprint. The virtual memory manager tracks recent reference behavior, reporting the current footprint and allocation to the collector. The collector uses those values as inputs to its model to compute a heap size that maximizes throughput while minimizing paging. We show that our adaptive heap sizing algorithm can substantially reduce running time over fixed-sized heaps.


ACM Transactions on Programming Languages and Systems | 2006

Generating object lifetime traces with Merlin

Matthew Hertz; Stephen M. Blackburn; J. Eliot B. Moss; Kathryn S. McKinley; Darko Stefanovic

Programmers are writing a rapidly growing number of programs in object-oriented languages, such as Java and C#, that require garbage collection. Garbage collection traces and simulation speed up research by enabling deeper understandings of object lifetime behavior and quick exploration and design of new garbage collection algorithms. When generating perfect traces, the brute-force method of computing object lifetimes requires a whole-heap garbage collection at every potential collection point in the program. Because this process is prohibitively expensive, researchers often use granulated traces by collecting only periodically, for example, every 32 KB of allocation.We extend the state of the art for simulating garbage collection algorithms in two ways. First, we develop a systematic methodology for simulation studies of copying garbage collection and present results showing the effects of trace granularity on these simulations. We show that trace granularity often distorts simulated garbage collection results compared with perfect traces. Second, we present and measure the performance of a new algorithm called Merlin for computing object lifetimes. Merlin timestamps objects and later uses the timestamps of dead objects to reconstruct when they died. The Merlin algorithm piggybacks on garbage collections performed by the base system. Experimental results show that Merlin can generate traces over two orders of magnitude faster than the brute-force method which collects after every object allocation. We also use Merlin to produce visualizations of heap behavior that expose new object lifetime behaviors.


Sigplan Notices | 2003

Older-first garbage collection in practice: evaluation in a Java Virtual Machine

Darko Stefanovic; Matthew Hertz; Stephen M. Blackburn; Kathryn S. McKinley; J. Eliot B. Moss

Until recently, the best performing copying garbage collectors used a generational policy which repeatedly collects the very youngest objects, copies any survivors to an older space, and then infrequently collects the older space. A previous study that used garbage-collection simulation pointed to potential improvements by using an Older-First copying garbage collection algorithm. The Older-First algorithm sweeps a fixed-sized window through the heap from older to younger objects, and avoids copying the very youngest objects which have not yet had sufficient time to die. We describe and examine here an implementation of the Older-First algorithm in the Jikes RVM for Java. This investigation shows that Older-First can perform as well as the simulation results suggested, and greatly improves total program performance when compared to using a fixed-size nursery generational collector. We further compare Older-First to a flexible-size nursery generational collector in which the nursery occupies all of the heap that does not contain older objects. In these comparisons, the flexible-nursery collector is occasionally the better of the two, but on average the Older-First collector performs the best.


international symposium on memory management | 2006

Program-level adaptive memory management

Chengliang Zhang; Kirk Kelsey; Xipeng Shen; Chen Ding; Matthew Hertz; Mitsunori Ogihara

Most applications performance is impacted by the amount of available memory. In a traditional application, which has a fixed working set size, increasing memory has a beneficial effect up until the applications working set is met. In the presence of garbage collection this relationship becomes more complex. While increasing the size of the programs heap reduces the frequency of collections, collecting a heap with memory paged to the backing store is very expensive. We first demonstrate the presence of an optimal heap size for a number of applications running on a machine with a specific configuration. We then introduce a scheme which adaptively finds this good heap size. In this scheme, we track the memory usage and number of page faults at a programs phase boundaries. Using this information, the system selects the soft heap size. By adapting itself dynamically, our scheme is independent of the underlying main memory size, code optimizations, and garbage collection algorithm. We present several experiments on real applications to show the effectiveness of our approach. Our results show that program-level heap control provides up to a factor of 7.8 overall speedup versus using the best possible fixed heap size controlled by the virtual machine on identical garbage collectors.


ACM Transactions on Programming Languages and Systems | 2007

Profile-based pretenuring

Stephen M. Blackburn; Matthew Hertz; Kathryn S. McKinley; J. Eliot B. Moss; Ting Yang

Pretenuring can reduce copying costs in garbage collectors by allocating long-lived objects into regions that the garbage collector will rarely, if ever, collect. We extend previous work on pretenuring as follows: (1) We produce pretenuring advice that is neutral with respect to the garbage collector algorithm and configuration. We thus can and do combine advice from different applications. We find for our benchmarks that predictions using object lifetimes at each allocation site in Java programs are accurate, which simplifies the pretenuring implementation. (2) We gather and apply advice to both applications and Jikes RVM, a compiler and runtime system for Java written in Java. Our results demonstrate that building combined advice into Jikes RVM from different application executions improves performance, regardless of the application Jikes RVM is compiling and executing. This build-time advice thus gives user applications some benefits of pretenuring, without any application profiling. No previous work uses profile feedback to pretenure in the runtime system. (3) We find that application-only advice also consistently improves performance, but that the combination of build-time and application-specific advice is almost always noticeably better. (4) Our same advice improves the performance of generational, Older First, and Beltway collectors, illustrating that it is collector neutral. (5) We include an immortal allocation space in addition to a nursery and older generation, and show that pretenuring to immortal space has substantial benefit.


technical symposium on computer science education | 2013

CloudCoder: building a community for creating, assigning, evaluating and sharing programming exercises (abstract only)

David Hovemeyer; Matthew Hertz; Paul Denny; Jaime Spacco; Andrei Papancea; John C. Stamper; Kelly Rivers

Automatically-tested online programming exercises can be useful in introductory programming courses as self-tests to accompany readings, for in-class assessment, for skills development, and to provide additional practice for students who need it. CloudCoder (http://cloudcoder.org) is an effort to build a community based on an open-source programming exercise system (currently supporting C, Java, and Python) tightly integrated with a repository of freely-redistributable programming exercises written and used by members of the community. The goal of the project is to make programming exercises easy and free to incorporate into any programming course.


ifip international conference on theoretical computer science | 2002

Framework for Analyzing Garbage Collection

Matthew Hertz; Neil Immerman; J. Eliot B. Moss

While the design of garbage collection algorithms has come of age, the anal- ysis of these algorithms is still in its infancy. Current analyses are limited to merely documenting costs of individual collector executions; conclusive results, measuring across entire programs, require a theoretical foundation from which proofs can be offered. A theoretical foundation also allows abstract examination of garbage collection, enabling new designs without worrying about implemen- tation details. We propose a theoretical framework for analyzing garbage collec- tion algorithms and show how our framework could compute the efcienc y (time cost) of garbage collectors. The central novelty of our proposed framework is its capacity to analyze costs of garbage collection over an entire program execution. In work on garbage collection, one frequently uses heap traces, which require determining the exact point in program execution at which each heap allocated object idiesi (becomes unreachable). The framework inspired a new trace gen- eration algorithm, Merlin, which runs more than 800 times faster than previous methods for generating accurate traces (7). The central new result of this paper is using the framework to prove that Merlins asymptotic running time is optimal for trace generation.

Collaboration


Dive into the Matthew Hertz's collaboration.

Top Co-Authors

Avatar

J. Eliot B. Moss

University of Massachusetts Amherst

View shared research outputs
Top Co-Authors

Avatar

Emery D. Berger

University of Massachusetts Amherst

View shared research outputs
Top Co-Authors

Avatar

Stephen M. Blackburn

Australian National University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Chen Ding

University of Rochester

View shared research outputs
Top Co-Authors

Avatar

Sarah Michele Ford

University of Massachusetts Amherst

View shared research outputs
Top Co-Authors

Avatar

Ting Yang

University of Massachusetts Amherst

View shared research outputs
Top Co-Authors

Avatar

Amer Diwan

University of Colorado Boulder

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge