Oracle, Uppsala University, and KTH in joint JVM research projects

Over the last couple of years, developers of Oracle Stockholm JVM development team have worked together with researchers at Uppsala University (and later KTH) to explore new ways of improving the JVM. By working together closely, both in the abstract sense — in the same codebase — and physically — in the same office — knowledge flows more freely between researchers and JVM engineers, both in front of the whiteboard and in front of the coffee machine, leading to a creative atmosphere that leverage experiences from the different teams. The Oracle office in Stockholm has thus hosted frequent visits from PhD students and master students, and from 2020 also professors (Tobias Wrigstad), thanks to a generous grant from SSF.

Our experience from building this kind of collaboration is that it takes time, effort and dedication. We are nevertheless proud to say that there are several interesting projects moving as part of this effort, and some are already starting to bear fruit in the forms of conference publications, a PhD thesis, and several master theses, all with novel research on the latest within the JVM. For this reason, we are initiating a series of blog posts here at to present this work to the wider community.

The main focus areas until now have been memory management and JVM Startup. This has led to new ways of thinking around object placement in the Z Garbage Collector and ways of partitioning the heap, both logically and physically, for various gains.

A few of the projects we are working on, and that you will be reading more about in future posts, are:

  • Explaining and Modelling ZGC: presenting the Z Garbage Collector in-depth as an alternative to JikesRVM to experiment with memory management ideas, including expressing Z as using model checking (using Promela and C++) as a means of explaining key concepts, enabling fast prototyping and verification of optimisations or new ideas in the context of ZGC.
  • Deterministic relocation using compressing forwarding information in ZGC to simplify prediction of an application’s memory footprint.
  • Various ways of using information about recent object usage in the JVM heap to improve object placement for improved performance, increase leak tolerance, reduce the GC working set, make the JVM more page-friendly, and more.
  • Improving JVM startup-time through heap snapshotting.

We are always interested in finding new partners for interesting research projects. Feel free to contact us if you want more information.

Stay tuned for future posts.