In This Section

Overview

Talon supports zero garbage steady state operation for application that run with Event Sourcing as an HA policy. For low latency applications avoid creation of garbage or object allocation is desirable because it will result in GC pauses that cause latency spikes. In some applications even a minor gc pause that results from promoting newly allocated objects to the tenured generation would violate SLAs. 

For the JVM to avoid any GC pauses it isn't sufficient for the platform alone to produce no garbage - the application business logic must also not produce garbage. Talon provides tools to help applications achieve this. For an application to achieve zero garbage it must. 

Weighing the Alternatives

When considering the techniques oulined in the following sections, weigh the cost of achieving zero garbage in your application. An overarching goal of the X Platform and Talon is to allow application developers to write pure business logic without infrastructure concerns. While many of the techniques outlined below are simple to adopt, achieving absolute zero garbage can be costly in terms of development effort and maintenance. 

The X Platform offers a low latency edition that bundles Azul's Zing JVM. The Zing JVM offers an extremely low overhead concurrent garbage collector that can elimininate GC pauses without the application developer having to worry about pooling or preallocation of business objects. In addition the Zing JVM has some other low latency treats such as jit precompilation that can improve application wamup. We have worked closely with Azul to ensure that when combined with the zero overhead garbage profile of the X Platform and an application that is doing a moderate amount of allocation that median latencies are on par with Oracle. 

Regardless of whether or not Zing is used, the following sections are still an important read for low latency developers. Some of the techniques employed will still result in a performance boost when using Zing or are good practice anyway. 

Zero Garbage Techniques

The following sections describe the various techniques that can be used by application to interoperate with the platform in a zero garbage fashion.