QVM: The Quality Virtual Machine - Chameleon
An increasing number of high level programming languages such as Java, C#, Python and Ruby include a collection framework as part of their runtime system. Collection frameworks provide the programmer with abstract data types for handling groups of data (e.g, Lists, Sets, Maps), and hide the details of the underlying data-structure implementation. Programs written in these high level languages make heavy use of collections. The implementations of these collections are usually well-optimized for a particular usage pattern. Unfortunately, it is possible for the program to use these collections with a different than anticipated pattern, thereby severely hampering overall system performance. Further, in large applications with millions of collection instances created, manually ensuring optimal collection usage is practical impossible.
The goal of the Chameleon project is to build a tool which automatically tunes the collection implementation to the particular application usage scenario. Currently, our tool provides deep context-based semantic information of how the collections are used in the program (two layers: state and trace based). Chameleon is integrated with a Java virtual machine runtime and hence its use requires no changes to the program (such as bytecode instrumentation) of any kind. We are currently applying our tool to large-scale production grade Java programs.
If you are interested in an internship in this area, please contact us over
Eran Yahav: email@example.com, Martin Vechev: firstname.lastname@example.org