I Normally Do Not Look This Good

Matthew Hertz

E-mail: mhertz@buffalo.edu
Address: 338 Davis Hall
Buffalo, NY 14260
Phone: (716) 645-4736
Department: Computer Science and Engineering Dept.
School of Engineering and Applied Sciences
University at Buffalo

I moved to the University at Buffalo in the Fall of 2016 after a decade at Canisius College. If you are interested in figuring out how I could fool 2 institutions into hiring (and promoting!) me as a faculty member you can examine my CV (and tell me how, too).

Spring 2024 Courses

CSE 115 - Computer Science 1
  Lectures Section A: MWF 12:00 - 12:50PM in Hoch 114

CSE 442 - Software Engineering Concepts
  Lectures Section A: MWF 3:00 - 3:50PM in Talbert 107
  Lectures Section B: MWF 10:00 - 10:50AM in Hoch 114

Office Hours

All of these office hours are in-person and held on a first-come, first-served basis. No appointment is needed for these hours.

  • Mon. 1:30 - 2:30PM in Davis 352
  • Tues. 2:00 - 3:30PM in Davis 352
  • Fri. 1:30 - 2:30PM in Davis 352

If you need to meet outside these times, email me to schedule a meeting


Poor Richard's Memory Manager

I have been investigating simple methods to improve the paging performance of garbage collected applications. Unlike past approaches, these are designed to be fully automatic and require little-to-no changes to the existing GC, virtual machine, OS. or program. This has culminated in the creation of Poor Richard's Memory Manager. Using PRMM requires under 100 LoC be added to the existing virtual machine code. It has been used to optimize the paging performance of programs on dedicated machines and in multiprogrammed environments. We have shown that it works for a large variety of GC algorithms: from the BDW whole-heap non-moving collector to MMTk's high performing generational collectors.


CS Education

I was lucky enough to have a number of wonderful teachers when I was first starting in computer science. I cannot emphasize enough the (positive!) impact they made on me. Upon my graduation, I was again lucky to find a school that values teaching undergraduates as much as research. On this vein, I am studying both how we teach computer science and ways that this teaching can be improved.


Virtual Memory Behavior

In a recent study, I found that while copying garbage collection performance is competitive with explicit memory management, this holds only when memory is plentiful. More than just demanding larger heap sizes, garbage collection performance depends on the heap staying memory resident. In experiments with several commercial JVMs, I found that SPECjbb throughput decreases up to 66% once the heap no longer fits within available memory. To solve this problem, I have developed Bookmarking collection (BC) and implemented this within the Jikes RVM and MMTk. When memory pressure is low, BC matches or beats the performance of the next best collector I tested, GenMS. By cooperating with the VM when memory pressure increases, BC executes up to 5x faster than the next best collector and up to 41x faster than GenMS.



Merlin is the asymptotically optimal object lifetime computation algorithm I developed and implemented within a trace generator for the Jikes RVM. Leveraging the Merlin algorithm, perfectly accurate traces for all of the benchmarks in jolden can be generated in an afternoon (even using the optimizing compiler!) and traces of the SPEC JVM98 suite of programs requires a weekend. "Merlin traces" are being used/have been used in many places including: UMass, McGill University, Australian National University, and the Universities of Colorado, New Mexico, Texas, and Kent. My trace genertion code (which includes both the Merlin algorithm and slower "brute force" method for lifetime analysis) is now a part of MMTk and included in the Jikes RVM CVS tree.


Garbage Collection Traces

The first publication in which I was involved researched the pretenuring of objects. This research analyzed garbage collection traces to find object allocation sites that can be "pretenured" --- or allocated into longer-lived regions. Using our pretenuring algorithm a program's performance can be improved up to 20%!

My Master's project examined the effects granulated garbage collection traces have on simulator fidelity. I found that "granulated" traces (traces that accurately compute which objects are unreachable only after every k bytes of allocation) significantly affect simulator results. While there were methods that may limit the impact of trace granularity, only perfectly accurate traces can guarantee accurate simulations.


  • Profile-based Pretenuring, Stephen M. Blackburn, Matthew Hertz, Kathryn S. McKinley, J. Eliot B. Moss, Ting Yang, Transactions on Programming Language and Systems (TOPLAS), Volume 29(1), January, 2007.
  • Generating Object Lifetime Traces with Merlin, Matthew Hertz, Steve M. Blackburn, K. S. McKinley, J. Eliot B. Moss, and Darko Stefanovic, Transactions on Programming Language And Systems (TOPLAS), Volume 28(3), May, 2006.
  • Quantifying the Performance of Garbage Collection vs. Explicit Memory Management, Matthew Hertz and Emery D. Berger, Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2005), San Diego, CA, Oct. 16-20, 2005.
  • Error-Free Garbage Collection Traces: How to Cheat and Not Get Caught, Matthew Hertz, Steve M. Blackburn, K. S. McKinley, J. Eliot B. Moss, and Darko Stefanovic, Proceedings of the International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS 2002), Marina Del Rey, CA, June 15-19, 2002.
  • Pretenuring for Java, Steve M. Blackburn, Sharad Singhai, Matthew Hertz, K. S. McKinley, and J. Eliot B. Moss, Proceedings of the 16th Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2001), Tampa, FL, Oct. 14-18, 2001.


For a good detailed look of the different topics I tackled in graduate school (and continue to interest me to this day), you can look through my doctoral thesis. While not as large as some, be warned this file is large.


Older First

In my first few years of graduate school, I implemented the Older First (OF) garbage collection algorithm within the UMass JVM, the Jalapeno virtual machine, and GCTk for the Jikes RVM. While Darko Stefanovic developed the OF algorithm, I have made several implementation optimizations when I coded it for inclusion with GCTk. I also developed the N-Maturing Older First (NMOF) collector which improves the initial OF design by moving objects that survive several collections into a mature object space. While the performance of NMOF has not formally studied, informal analysis suggests NMOF reduces the work OF performs (as measured by the mark-cons ratio).


Compiler Optimizations

I am very interested in compiler optimizations, especially in compiler optimizations for garbage collection. While I have not yet published anything in this area, I spent the summer of 2002 working as a graduate intern at Sun Labs implementing new compiler optimizations for garbage collection within HotSpot.