Back to overview

Workload Characterization of JVM Languages

Type of publication Peer-reviewed
Publikationsform Original article (peer-reviewed)
Author Sarimbekov Aibek, Stadler Lukas, Bulej Lubomír, Sewe Andreas, Podzimek Andrej, Zheng Yudi, Binder Walter,
Project FAN: Foundations of dynamic program ANalysis
Show all

Original article (peer-reviewed)

Journal Software: Practice and Experience
Title of proceedings Software: Practice and Experience
DOI 10.1002/spe.2337


Originally developed with a single language in mind, the JVM is now targeted by numerous programming languages—its automatic memory management, just-in-time compilation, and adaptive optimizations—making it an attractive execution platform. However, the garbage collector, the just-in-time compiler, and other optimizations and heuristics were designed primarily with the performance of Java programs in mind. Consequently, many of the languages targeting the JVM, and especially the dynamically typed languages, are suffering from performance problems that cannot be simply solved at the JVM side. In this article, we aim to contribute to the understanding of the character of the workloads imposed on the JVM by both dynamically typed and statically typed JVM languages. To this end, we introduce a new set of dynamic metrics for workload characterization, along with an easy-to-use toolchain to collect the metrics. We apply the toolchain to applications written in six JVM languages (Java, Scala, Clojure, Jython, JRuby, and JavaScript) and discuss the findings. Given the recently identified importance of inlining for the performance of Scala programs, we also analyze the inlining behavior of the HotSpot JVM when executing bytecode originating from different JVM languages. As a result, we identify several traits in the non-Java workloads that represent potential opportunities for optimization.