...
Talon supports zero garbage steady state operation for application that run with Event Sourcing as an HA policy. For low latency applications avoid , avoiding creation of garbage or object allocation is desirable because it that 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. :
- Preallocate state objects up front to avoid newly created state from causing object promotions.
- Avoid autoboxing by using primitive types.
- Avoid array creation.
- Avoid and replace Strings with XString.
- Use zero garbage collections.
...
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 has 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 , and are good practice anyway.
...