Excelsior JET Memory Management Properties Cheat Sheet

This is a video response to the HotSpot JVM garbage collection options cheat sheet recently posted by Alexey Ragozin. (Alexey lists so many -XX options that I cannot help wondering if Sun had reserved any top-secret -XXX ones for internal use. ;) )

In contrast, what Excelsior JET users have does not look that much like a sheet, more like a sticky note:

Property Description
jet.gc.heaplimit1 Maximum heap size. Defaults to a special value of 0, meaning “adaptive”
jet.gc.ratio Maximum percentage of CPU time spent on garbage collection, in tenths of a percent. Default: 11 (1.1%)
jet.gc.no.swap Throw OutOfMemoryError if not enough physical memory is available even after garbage collection. Default: use virtual memory.
jet.gc.threads Maximum number of concurrent threads that the garbage collector may use. By default, it utilizes all available CPU cores.


1 Multi-app executables also recognize the -Xmx option.

For details, refer to the Knowledge Base article HOWTO: Fine tune application memory footprint.

In addition, Excelsior JET Runtime has three flavors: Classic, Desktop, and Server, with availability depending on edition. The choice of Runtime affects the efficiency of memory allocation and garbage collection in multithreaded applications running on multi-core/multi-CPU systems. The default is set at compile time, but can be overridden using the jet.rt property.

Do you need more control, or a memory manager that “just works”? Welcome to comments.

Excelsior JET Roadmap Updated, Feedback Sought

The updated Excelsior JET Roadmap is back online.

In brief: the last 32-bit-only version is on track for October release, the first 64-bit preview is set to see the light of day before the end of 2011, and Java 7 is put aside in favor of an earlier 64-bit release, in turn expected to occur in about a year from now.

We understand this may not align with your plans for Java 7 and therefore would greatly appreciate your feedback. Please post in the comments or vote in the forum poll.

Excelsior Delivery 2.2 beta Adds MSI Support

We are pleased to announce that a public beta of Excelsior Delivery 2.2 is available for download.

The major new feature of this release is the option to create installation packages in MSI format, which is the native format for Windows Installer.

Specifically, the Packager can now export your project as a set of files that may be provided as input to WiX, an open source toolset that builds Windows installation packages from XML source code, originally developed by Microsoft.

The Packager can also invoke WiX tools directly, essentially enabling you to use Excelsior Delivery as a GUI front-end for WiX. You may also use this feature to migrate your project to a WiX-based setup authoring tool if necessary.

We would greatly appreciate your feedback.

Excelsior JET 6.5 EOL Alert

According to the Support Policy statement, Excelsior JETĀ 6.5 has reached Product End Of Life status. We encourage customers of this version to migrate to more recent versions to receive the support services under valid Support Contracts.

If you need help in migrating to a newer version of Excelsior JET,
do not hesitate to contact us.

64-bit JET Runtime Initialized

We have reached the next internal milestone in the development of 64-bit Excelsior JET:

  • 64-bit JET Runtime DLLs are now part of regular automatic build
  • Compiled executables correctly load the JET Runtime components
  • Initialization of 64-bit Runtime passed and reached the point of first execution of Java code

The next goal is running “Hello, world!”, which, in turn, requires execution of multiple Java SE platform classes on startup.

Customer Showcase: Rocksand Computers and its Digital Tachograph

Thousands of businesses around the world trust Excelsior JET to protect, optimize, and package their Java applications. The Customer Showcase series highlights some of them.

Today’s featured company is Rocksand Computers Limited, UK. Paul Sapsford, Managing Director, writes in:

Pitstop Flag is a digital tachograph analysis application that assists Operators meet the EC Drivers’ Hours and Working Time Directive legislation. From the tachograph data it produces infringement, speeding and summary reports enabling Operators maintain a legally run fleet of vehicles.


Small and medium sized companies such as Rocksand Computers are often capable of providing better products and services at more attractive prices than their bigger rivals, but do not have the latter’s marketing budgets at their disposal. We already treat such companies in a special way, but this series is an attempt to help them get their marketing message out. If you want your product featured in the Customer Showcase, please contact us.

Fresh Updates For Excelsior JET 7.0 And 7.2

Our work on the 64-bit port has borne early fruit. During the thorough review and re-write of Excelsior JET Runtime, we have discovered a few stability issues, and promptly backported the fixes to the current and previous version.

At the same time, we have to apologize for being unable to catch up with Oracle JDK team on Java version support – they have already released Java SE 6 Update 25 and we can only provide you with 6u24 today. Will do better next time.

Learn more and download the updates here:

If you are a paying customer of Excelsior JET 7.0 or 7.2, but the download instructions for the above updates are neither in your inbox nor in the junk mail box, request them from our Support Dept. at support@excelsior-usa.com.

Microbusiness Licensing Program Third Anniversary

Excelsior Microbusiness Licensing Program enables small companies and self-employed professionals to purchase our main product at a substantial discount.

A small South African consultancy was the first to take advantage of this Program back on May 7, 2008, so technically today is its third anniversary – time to share some results with the world.

But first, for those of you who came to this post without knowing much about us and our product, let me elaborate a bit on why we had introduced the Program in the first place.

Excelsior JET is a Java software development tool licensed per seat. However, it is not an IDE that each developer uses on a daily basis, but rather an optimization and packaging tool that is invoked during automated builds most of the time. Therefore it is often sufficient to purchase just one license for a group of developers. This effectively makes the price per developer too high for the most price-sensitive customers: microISVs, early stage startups, and other very small businesses employing just one or two software engineers. We thought it would be fair to offer discounts to such customers.

Now, without disclosing the absolute sales figures, I can tell you that this Program has accounted for over 35% of all new license sales in 2010 in terms of the number of licenses sold, which translated to 27.5% in terms of revenue:

These figures however do not include upgrades or support contract renewals, to which the participants of the Program contribute much less frequently than other customers, I must admit.

Please do not hesitate to share your experience/opinions and ask questions in the comments.

First 64-bit executable

Excelsior JET has produced the first 64-bit executable that starts and terminates correctly.

It was compiled by the baseline (non-optimizing) AOT compiler that currently supports only “simple” bytecodes such as arithmetic operations and direct calls. Under the covers, this is a result of completing large development tasks:

  • Baseline compiler has been completely re-implemented in Java (BTW, its 32-bit version has passed all JCK 6 tests)
  • 64-bit code emitter has been successfully integrated into the new baseline compiler
  • Lots of work have been done in the linker to support various JET Runtime structures for 64-bit platforms (which will not be limited to Windows and Linux, we hope ;) )

Now we are actively working on 64-bit JET Runtime…

And code emitter for all

A new component completed for 64-bit Excelsior JET is code emitter that generates all necessary x64 instructions. For better design, we have also implemented and tested 32-bit version of the emitter sharing the common infrastructure.

The component is supposed to be highly reusable: in addition to the optimizing AOT compiler, it will be integrated with the baseline (fast non-optimizing) compiler and both 32- and 64-bit JIT compilers. Finally, the emitter will then be used to optimally generate certain platform-specific runtime routines right on the JVM bootstrap.