ABSTRACT

Along with the increasingly important runtime engines pervasive in our daily-life computing, there is a strong demand from the software community for a solid presentation on the design and implementation of modern virtual machines, including the Java virtual machine, JavaScript engine and Android execution engine. The community expects to see not only formal algorithm description, but also pragmatic code snippets; to understand not only research topics, but also engineering solutions. This book meets these demands by providing a unique description that combines high level design with low level implementations and academic advanced topics with commercial solutions.

This book takes a holistic approach to the design of VM architecture, with contents organized into a consistent framework, introducing topics and algorithms in an easily understood step by step process. It focuses on the critical aspects of VM design, which are often overlooked in other works, such as runtime helpers, stack unwinding and native interface. The algorithms are fully illustrated in figures and implemented in easy to digest code snippets, making the abstract concepts tangible and programmable for system software developers.

part |2 pages

SECTION I: Basics of Virtual Machines

chapter 1|6 pages

◾ Introduction of the Virtual Machine

chapter 2|12 pages

◾ Inside of a Virtual Machine

chapter 3|4 pages

◾ Data Structures in a Virtual Machine

part |2 pages

SECTION II: Design of Virtual Machines

chapter 4|18 pages

◾ Design of Execution Engine

chapter 5|24 pages

◾ Design of Garbage Collection

chapter 6|36 pages

◾ Design of Threading

part |2 pages

SECTION III: Supports in Virtual Machine

chapter 7|18 pages

◾ Native Interface

chapter 8|14 pages

◾ Stack Unwinding

chapter 9|30 pages

◾ Garbage Collection Support

chapter 10|16 pages

◾ Runtime-Helpers

chapter 11|28 pages

◾ Exception-Throwing

chapter 12|16 pages

◾ Finalization and Weak References

chapter 13|14 pages

◾ Modularity Design of VM

part |2 pages

SECTION IV: Optimizations of Garbage Collection

chapter 14|26 pages

◾ Optimizing GC for Throughput

chapter 15|20 pages

◾ Optimizing GC for Scalability

chapter 16|32 pages

◾ Optimizing GC for Responsiveness

chapter 17|34 pages

◾ Concurrent Moving Collection

part |2 pages

SECTION V: Optimizations of Thread Interactions

chapter 18|44 pages

◾ Optimizing Monitor Performance