Oracle Java SE Embedded: Developer's Guide

6 About Oracle Java SE Embedded JVMs

Learn about the JVMs that you can choose from when building a custom JRE.

A Java virtual machine (JVM) is the basis of a Java Runtime Environment. A JVM loads, verifies, and executes application and library code. A JVM can execute code by interpreting the bytecodes directly, or it can compile frequently used bytecode blocks into machine instructions, cache the compiled blocks, and then run them faster without interpretation. A JVM also manages dynamic memory allocation and reclamation, known as garbage collection.

Three Java Virtual Machines are included with the Oracle Java SE Embedded software. Each design balances performance-resource tradeoffs in a different way.

You can experiment with all three JVMs, and you can use one for debugging and another for production. To include particular Java Virtual Machines in a custom JRE, see Create Your JRE with jrecreate.

Minimal JVM

The minimal JVM emphasizes a minimal memory footprint over nonessential features. For example, it has a single serial garbage collector and no serviceability features. The minimal JVM does not support all java launcher options. See Launch the Application with the java Launcher Tool.

Client JVM

The client JVM is a full-featured Java Virtual Machine optimized for responsiveness. It starts and compiles applications more quickly and uses less memory than the server JVM. It has garbage collection options and supports debugging and profiling.

Server JVM

The server JVM is functionally identical to the client JVM, but it is tuned for long-running applications. It uses more memory than the client JVM. It launches and compiles applications more slowly but runs them faster because it creates more optimized code.

The server JVM is not available on all targets. See Oracle Java SE Embedded Release Notes for specific information about which targets support the server JVM.


On platforms or JREs with no server VM, -server is aliased to the available VM, - either -client or -minimal. Similarly in a JRE produced by jrecreate that only has the minimal VM, -client is aliased to -minimal. Note that -minimal is never aliased; if you request it and it is not present, you will get an error.

Close Window

Table of Contents

Oracle Java SE Embedded: Developer's Guide

Expand | Collapse