Project: Understanding the Memory Behavior of JavaScript Programs

Project: Understanding the Memory Behavior of JavaScript Programs

Overview

For nearly twenty years there was a large focus on Java performance, and included in this was a large focus on the memory behavior of Java programs. Our ANU research group had large part in that work, building infrastructure, developing key methodologies and performing some of the highly cited analyses. These analyses provided numerous insights that led to a great deal of productivity in the development of garbage collection algorithms for Java. Today there are many important garbage collected languages, and Java’s role is less prominent than it was. However, these languages have not come under such attention and have not been subjected to such studies.

This project will examine the memory behavior of realistic JavaScript programs, applying similar methodologies and analyses as those that were developed for Java, and developing new methodologies and analyses where necessary.

Themes

  • Garbage collection
  • Performance Analysis
  • Programming Languages

Requirements

  • Coding The project will work MMTk, which is written in Rust and V8, which is written in C++. It should not involve a lot of V8 coding, and only modest MMTk coding. It may require a small amount of low-level systems coding to ensure suitable instrumentations are in place (e.g. for gathering hardware performance counters). It may involve writing some analyses, likely in a scripting language, or R. It may involve some work with the source code of JavaScript benchmarks.

  • Analysis The project is heavily focused on analysis and gleaning insights from that analysis.

Project Length

This project is large, but can be broken into many smaller pieces. There is sufficient material here for a complete PhD, but there are many smaller parts that could form single-semester half-year projects.

Project Outputs

This project will develop tool chains that will be made publicly available alongside (and/or as part of) MMTk. The work has the potential to generate multiple papers.

References

The following papers are Java-related, but are indicative of the kind of work we want to do. There are more on my web page, but this is a start…

This one is PHP: