Though we put a lot of efforts in testing, the last bug in Excelsior JET is yet to be found. If you encountered a bug in the JET Optimizer, or if it crashed while compiling your application, please do the following:
Reason: The current setting of memory usage limit in the JET’s compiler is too small for compilation of your program.
Resolution: Increase the value of COMPILERHEAP in in your project file, for instance:
-compilerheap=90000000
Reason: The current setting of compiler memory usage limit is too large for your system.
Resolution: Close all applications that you do not need at the moment. If it does not help, reduce the size of compiler heap through decreasing the value of COMPILERHEAP in your project file or on the command line, for instance:
jc MyApp.jar -compilerheap=80000000
The default value of COMPILERHEAP may be inspected by running jc in the EQUATIONS submode:
jc =e
Unrecoverable errors are those preventing the program from further execution, that is, the errors (crashes) which cannot be handled.
A known example is access violation that occurs when reading/writing memory at an address to which no memory page was mapped or transferring control to such a region. If a JET-compiled application runs into the problem, the Runtime prints TRAP#3 message and execution abnormally terminates.
Of course, it should never happen in a pure Java application but, unfortunately, it may happen due to:
Often, the errors are volatile, that is, hardly reproducible. To address the problem, the JET Runtime includes a special diagnostic facility. If an unrecoverable error occurs, the Runtime collects various information about the application state, logs it into a file, and prints the error message referencing that file.
Properties may be set at compile time using the JETVMPROP equation or at launch time using the JETVMPROP environment variable. See Java system properties for details.
Resolution: Use resource packing.
Reason: Application’s heap size is set to adaptive, and there is not enough available physical memory on the system, or the explicit setting is too low.
Resolution: Adjust the application’s heap size setting:
SET JETVMPROP=-Djet.gc.heaplimit:90m MyApp
More information on memory management settings of the JET Runtime may be found in Memory management.
Reason: Your application runs too many threads.
Resolution: Reduce thread stack size:
jc MyApp.jar -stacklimit=100000
The default value of STACKLIMIT may be inspected by running jc in the EQUATIONS submode:
jc =e
See Chapter Deployment automation for information on deployment of the compiled applications.
Excelsior JET is not able to create a single all-inclusive executable that can be deployed to target machines by simply copying. Instead, JET offers the following deployment options:
See Chapter Deployment automation for information on JET deployment automation facilities.
If you are interested in creating single executables for reasons other than deployment, please fill out the form at
http://www.excelsior-usa.com/jetfr.html
and describe your requirements for that feature.