Frequently Asked Questions - Performance Troubleshooting

The JamaicaVM Builder is shipped with -XexcludeLongerThan=2500. This means that only methods with a bytecode count less than 2500 are candidates for compilation by the JamaicaVM Builder. This setting was needed historically for early toolchains that had size limitations. It can safely be increased to a large number such as 99999 with current toolchains.

The option -verbose=3 will output a log of all compiled classes.

The -profile switch informs JamaicaVM Builder to include the profiling code in the built executable. The performance of the resulting executable is approximately 2x to 3x slower due to the profiling code overhead. We recommend not to use this switch when building production code.

The JamaicaVM Builder is shipped with a default profile to compile the runtime class library, rt.jar for a preconfigured “average” use case. The jamaica.conf file sets the percentageCompiled value to 10%. None of your program code is compiled with the default configuration. All of your program code is stored in a compressed bytecode format and interpreted at runtime.

We strongly recommend creating a profile for your program and supplying the profile to JamaicaVM Builder to optimize your program's performance.

The JamaicaVM interpreter will execute all Java bytecodes correctly. The performance is expected to be 25x to 35x slower than Java bytecodes compiled by the JamaicaVM Builder.