SlideShare a Scribd company logo
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Understanding Java
Garbage Collection
and what you can do about it
Matt Schuetze, Director of Product Management
Azul Systems
A presentation to the New York Java Special Interest Group
March 27, 2014
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
This Talk’s Purpose / Goals
This talk is focused on GC education
This is not a “how to use flags to tune a collector” talk
This is a talk about how the “GC machine” works
Purpose: Once you understand how it works, you can
use your own brain...
You’ll learn just enough to be dangerous...
The “Azul makes the world’s greatest GC” stuff will only
come at the end, I promise...
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
About Azul Systems
We deal with Java performance issues on a daily
basis
Our solutions focus on consistent response time under load
We enable practical, full use of hardware resources
As a result, we often help characterize problems
In many/most cases, it’s not the database, app, or
network - it’s the JVM, or the system under it…
GC Pauses, OS or Virtualization “hiccups”, swapping, etc.
We use and provide simple tools to help discover
what’s going on in a JVM and the underlying
platform
Focus on measuring JVM/Platform behavior with your app
Non-intrusive, no code changes, easy to add
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
About Azul
We make scalable Virtual
Machines
Have built “whatever it takes
to get job done” since 2002
3 generations of custom SMP
Multi-core HW (Vega)
Now Pure software for
commodity x86 (Zing)
“Industry firsts” in Garbage
collection, elastic memory,
Java virtualization, memory
scale
Vega
C4
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
High level agenda
GC fundamentals and key mechanisms
Some GC terminology & metrics
Classifying current commercially available collectors
Why Stop-The-World is a problem
The C4 collector: What a solution to STW looks like...
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Is GC still a real problem?
“The one big challenge left
for Java on performance is
containing pause times.
Latency jitter is the only
reason to ever use
other languages inside
Twitter.”
--Adam Messinger,
CTO of Twitter
Citation: Oracle Java 8
global launch video,
March 25, 2014
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
GC behavior of a JVM with little heap tuning
-Xms1024m -Xmx1024m -XX:NewSize=200m -XX:MaxNewSize=200m
New generation GC
pauses on average
occurred every 6
seconds and lasted
less than 50
milliseconds.
Any single pause is
unnoticeable to the
users waiting for the
server’s response.
Old generation pauses
on average occurred
less than once per
hour but lasted as much
as almost 8 seconds on
average with a single
outlier even reaching 19
seconds.
Many Old Generation Full GC (the grey
lines) Blue = Heap occupancy
Heap used over a period of about 25 hours:
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Memory use
• How many of you use heap sizes of:
• more than ½ GB?
• more than 1 GB?
• more than 2 GB?
• more than 4 GB?
• more than 10 GB?
• more than 20 GB?
• more than 50 GB?
• more than 100 GB?
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Why should you understand
(at least a little) how GC works?
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Much of what People seem to “know”
about Garbage Collection is wrong
In many cases, it’s much better than you may think
GC is extremely efficient. Much more so that malloc()
Dead objects cost nothing to collect
GC will find all the dead objects (including cyclic graphs)
...
In many cases, it’s much worse than you may think
Yes, it really does stop for ~1 sec per live GB
No, GC does not mean you can’t have memory leaks
No, those pauses you eliminated from your 20 minute test are not
gone
...
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Trying to solve GC problems in application
architecture is like throwing knives
You probably shouldn’t do it blindfolded
It takes practice to do it well without hurting people
You can get very good at it, but do you really want to?
Will all the code you leverage be as good as yours?
Examples of “GC friendly” techniques:
Object pooling
Off heap storage
Distributed heaps
...
(In most cases, you end up building your own garbage collector)
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Some GC Terminology
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
A Concurrent Collector performs garbage collection work
concurrently with the application’s own execution
A Parallel Collector uses multiple CPUs to perform
garbage collection
Classifying a collector’s operation
An Incremental collector performs a garbage collection
operation or phase as a series of smaller discrete
operations with (potentially long) gaps in between
A Stop-the-World collector performs garbage collection
while the application is completely stopped
Mostly means sometimes it isn’t (usually means a
different fall back mechanism exists)
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Compact
Over time, heap will get “swiss cheesed”: contiguous
dead space between objects may not be large enough
to fit new objects (aka “fragmentation”)
Compaction moves live objects together to reclaim
contiguous empty space (aka “relocate”)
Compaction has to correct all object references to
point to new object locations (aka “remap”)
Remap scan must cover all references that could
possibly point to relocated objects
Note: work is generally linear to “live set”
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Copy
A copying collector moves all lives objects from a
“from” space to a “to” space & reclaims “from” space
At start of copy, all objects are in “from” space and all
references point to “from” space.
Start from “root” references, copy any reachable
object to “to” space, correcting references as we go
At end of copy, all objects are in “to” space, and all
references point to “to” space
Note: work generally linear to “live set”
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Generational Collection
Weak Generational Hypothesis; “most objects die young”
Focus collection efforts on young generation:
Use a moving collector: work is linear to the live set
The live set in the young generation is a small % of the space
Promote objects that live long enough to older generations
Only collect older generations as they fill up
“Generational filter” reduces rate of allocation into older generations
Tends to be (order of magnitude) more efficient
Great way to keep up with high allocation rate
Practical necessity for keeping up with processor throughput
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Why Generational Garbage Collection
Here is an example of such data. Y axis = number of bytes
allocated; X access = number of bytes allocated over time
Having to mark and compact all
the objects in a JVM is
inefficient. As more and more
objects are allocated, the list of
objects grows and grows
leading to longer and longer
garbage collection time.
However, empirical analysis of
applications has shown that
most objects are short lived.
This is called the ‘weak
generational hypothesis’
As you can see, fewer and
fewer objects remain allocated
over time. In fact most objects
have a very short life as shown
by the higher values on the left
side of the graph
Bytes allocated over time
X = number of Bytes allocated; Y = number of Bytes allocated over time
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Mutator
Your program…
Parallel
Can use multiple CPUs
Concurrent
Runs concurrently with program
Pause
A time duration in which the
mutator is not running any code
Stop-The-World (STW)
Something that is done in a pause
Monolithic Stop-The-World
Something that must be done in it’s
entirety in a single pause
Useful terms for discussing garbage
collection
Generational
Collects young objects and long lived
objects separately.
Promotion
Allocation into old generation
Marking
Finding all live objects
Sweeping
Locating the dead objects
Compaction
Defragments heapMoves objects in
memory. Remaps all affected references.
Frees contiguous memory regions
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Useful metrics for discussing garbage
collection
Cycle time
How long it takes the collector to free
up memory
Marking time
How long it takes the collector to find all
live objects
Sweep time
How long it takes to locate dead
objects
* Relevant for Mark-Sweep
Compaction time
How long it takes to free up memory by
relocating objects
* Relevant for Mark-Compact
Heap population (aka Live set)
How much of your heap is alive
Allocation rate
How fast you allocate
Mutation rate
How fast your program updates
references in memory
Heap Shape
The shape of the live object graph
* Hard to quantify as a metric...
Object Lifetime
How long objects live
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Classifying common collectors
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
The typical combos
in commercial server JVMS
Young generation usually uses a copying collector
Young generation is usually monolithic, stop-the-world
Old generation usually uses Mark/Sweep/Compact
Old generation may be STW, or Concurrent, or mostly-
Concurrent, or Incremental-STW, or mostly-
Incremental-STW
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
HotSpot™ ParallelGC
Collector mechanism classification
Monolithic Stop-the-world copying NewGen
Monolithic Stop-the-world Mark/Sweep/Compact OldGen
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
HotSpot™ ConcMarkSweepGC (aka CMS)
Collector mechanism classification
Monolithic Stop-the-world copying NewGen (ParNew)
Mostly Concurrent, non-compacting OldGen (CMS)
Mostly Concurrent marking
Mark concurrently while mutator is running
Track mutations in card marks
Revisit mutated cards (repeat as needed)
Stop-the-world to catch up on mutations, ref processing, etc.
Concurrent Sweeping
Does not Compact (maintains free list, does not move objects)
Fallback to Full Collection (Monolithic Stop the world).
Used for Compaction, etc.
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
HotSpot™ G1GC (aka “Garbage First”)
Collector mechanism classification
Monolithic Stop-the-world copying NewGen
Mostly Concurrent, OldGen marker
Mostly Concurrent marking
Stop-the-world to catch up on mutations, ref processing, etc.
Tracks inter-region relationships in remembered sets
Stop-the-world mostly incremental compacting old gen
Objective: “Avoid, as much as possible, having a Full GC…”
Compact sets of regions that can be scanned in limited time
Delay compaction of popular objects, popular regions
Fallback to Full Collection (Monolithic Stop the world).
Used for compacting popular objects, popular regions, etc.
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Delaying the inevitable
Some form of copying/compaction is inevitable in practice
And compacting anything requires scanning/fixing all references to it
Delay tactics focus on getting “easy empty space” first
This is the focus for the vast majority of GC tuning
Most objects die young [Generational]
So collect young objects only, as much as possible. Hope for short STW.
But eventually, some old dead objects must be reclaimed
Most old dead space can be reclaimed without moving it
[e.g. CMS] track dead space in lists, and reuse it in place
But eventually, space gets fragmented, and needs to be moved
Much of the heap is not “popular” [e.g. G1, “Balanced”]
A non popular region will only be pointed to from a small % of the heap
So compact non-popular regions in short stop-the-world pauses
But eventually, popular objects and regions need to be compacted
Young generation pauses are only small because heaps are tiny
A 200GB heap will regularly have several GB of live young stuff…
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Monolithic-STW GC Problems
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
One way to deal with Monolithic-STW GC
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Another way to cope: “Creative Language”
“Guarantee a worst case of X msec, 99% of the time”
“Mostly” Concurrent, “Mostly” Incremental
• Translation: “Will at times exhibit long monolithic stop-
the-world pauses”
“Fairly Consistent”
• Translation: “Will sometimes show results well outside
this range”
“Typical pauses in the tens of milliseconds”
• Translation: “Some pauses are much longer than tens
of milliseconds”
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Actually measuring things
(e.g. jHiccup)
©2012 Azul Systems, Inc.©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Getting past a monolithic-STW
Garbage Collection world
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
We need to solve the right problems
Scale is artificially limited by responsiveness
Responsiveness must be unlinked from scale:
Heap size, Live Set size, Allocation rate, Mutation rate
Transaction Rate, Concurrent users, Data set size, etc.
Responsiveness must be continually sustainable
Can’t ignore “rare” events
Eliminate all Stop-The-World Fallbacks
At modern server scales, any STW fall back is a failure
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
The problems that need solving
(areas where the state of the art needs improvement)
Robust Concurrent Marking
In the presence of high mutation and allocation rates
Cover modern runtime semantics (e.g. weak refs, lock deflation)
Compaction that is not monolithic-stop-the-world
E.g. stay responsive while compacting ¼ TB heaps
Must be robust: not just a tactic to delay STW compaction
[current “incremental STW” attempts fall short on robustness]
Young-Gen that is not monolithic-stop-the-world
Stay responsive while promoting multi-GB data spikes
Concurrent or “incremental STW” may both be ok
Surprisingly little work done in this specific area
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Azul’s “C4” Collector
Continuously Concurrent Compacting Collector
Concurrent guaranteed-single-pass marker
Oblivious to mutation rate
Concurrent ref (weak, soft, final) processing
Concurrent Compactor
Objects moved without stopping mutator
References remapped without stopping mutator
Can relocate entire generation (New, Old) in every GC cycle
Concurrent, compacting old generation
Concurrent, compacting new generation
No stop-the-world fallback
Always compacts, and always does so concurrently
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
C4 algorithm highlights
Same core mechanism used for both generations
Concurrent Mark-Compact
A Loaded Value Barrier (LVB) is central to the algorithm
Every heap reference is verified as “sane” when loaded
“Non-sane” refs are caught and fixed in a self-healing barrier
Refs that have not yet been “marked through” are caught
Guaranteed single pass concurrent marker
Refs that point to relocated objects are caught
Lazily (and concurrently) remap refs, no hurry
Relocation and remapping are both concurrent
Uses “quick release” to recycle memory
Forwarding information is kept outside of object pages
Physical memory released immediately upon relocation
“Hand-over-hand” compaction without requiring empty memory
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
GC Tuning
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Java GC tuning is “hard”…
Examples of actual command line GC tuning parameters:
Java -Xmx12g -XX:MaxPermSize=64M -XX:PermSize=32M -XX:MaxNewSize=2g
-XX:NewSize=1g -XX:SurvivorRatio=128 -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=0
-XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSInitiatingOccupancyOnly -XX:ParallelGCThreads=12
-XX:LargePageSizeInBytes=256m …
Java –Xms8g –Xmx8g –Xmn2g -XX:PermSize=64M -XX:MaxPermSize=256M
-XX:-OmitStackTraceInFastThrow -XX:SurvivorRatio=2 -XX:-UseAdaptiveSizePolicy
-XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled
-XX:+CMSParallelRemarkEnabled -XX:+CMSParallelSurvivorRemarkEnabled
-XX:CMSMaxAbortablePrecleanTime=10000 -XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=63 -XX:+UseParNewGC –Xnoclassgc …
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
The complete guide to
Zing GC tuning
• java -Xmx40g
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Sustainable Throughput:
The throughput achieved while
safely maintaining service levels
Unsustainable
Throughout
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Instance capacity test: “Fat Portal”
HotSpot CMS: Peaks at ~ 3GB / 45 concurrent users
* LifeRay portal on JBoss @ 99.9% SLA of 5 second response times
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Instance capacity test: “Fat Portal”
C4: still smooth @ 800 concurrent users
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Fun with jHiccup
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
How is Azul’s Java Platform Different?
Same JVM standard -
Licensed JCK compliant JVM for JSE6 and JSE7. JSE 8 in flight.*
Derived from same base as Hotspot, fully Java compatible
passes Java Compatibility Kit (JCK) server-level compatibility (~53000 tests )
A different approach
Garbage is good!
Designed with insight that worst case must eventually happen
Unique values
Highly scalable … 100s GB with consistent low pause times – other JVMs will have longer
“stop-the-world” pauses in proportion to size of JVM and memory allocation rate
Elastic memory … insurance for JVMs to handle dynamic load – unlike other JVMs which
are rigidly tuned
Collects New Garbage and Old Garbage concurrently with running application threads …
there is no “stop-the-world” for GC purposes (you will only see extremely short pause times to
reach safepoints) – unlike other JVMs which will eventually stop-the-world.
Compacts Memory concurrently with your application threads running … Zing will move
objects without “stop-the-world” or single-threading – which is a major issue with other JVMs
Measuring pause times from FIRST thread stopped (unlike other JVMs)
Rich non-intrusive production visibility with ZVision and ZVRobot
WYTIWYG (What You Test Is What You Get)
* Zing for JSE8 in dev
with JCK 8 in QA as of
today’s talk
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
"We were originally designed for extremely large heaps, and
some people use us in huge-data-set situations – which is
why a typical 5GB or 10GB heap that challenges most JVMs
is a walk in the park for Zing"
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Some people have big problems to solve
in the big data world and Zing doesn’t
pause for GC
Tests were performed with varying live data set sizes,
and a 250GB heap:
55 GB:
• Zing: 35 milliseconds; Hotspot G1: 357 seconds
110 GB:
• Zing: 75 milliseconds; Hotspot G1: 225 seconds
215 GB:
• Zing: 20 milliseconds; Hotspot G1: 1,055 seconds
JavaOne 2012: Neil Ferguson, Causata:
CON4623 - Big RAM: How Java Developers Can Fully Exploit Massive Amounts of RAM
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
What you can expect (from Zing)
in the low latency world
Assuming individual transaction work is “short” (on
the order of 1 msec), and assuming you don’t have
100s of runnable threads competing for 10 cores...
“Easily” get your application to < 10 msec worst case
With some tuning, 2-3 msec worst case
Can go to below 1 msec worst case...
May require heavy tuning/tweaking
Mileage WILL vary
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Oracle HotSpot (pure newgen) Zing
Low latency trading application
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Low latency - Drawn to scale
Oracle HotSpot (pure newgen) Zing
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Q & A
GC :
G. Tene, B. Iyengar and M. Wolf
C4: The Continuously Concurrent Compacting Collector
In Proceedings of the international symposium on Memory management,
ISMM’11, ACM, pages 79-88
Jones, Richard; Hosking, Antony; Moss, Eliot (25 July 2011).
The Garbage Collection Handbook: The Art of Automatic Memory
Management. CRC Press. ISBN 1420082795.
jHiccup:
http://www.azulsystems.com/dev_resources/jhiccup
©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
Thanks for Attending
www.azulsystems.com
Grab a pen!
Take a card!
To contact the speaker email:
Matt Schuetze, Director of Product Management
mschuetze@azulsystems.com
Refer to NYJavaSIG

More Related Content

What's hot

Discover Quarkus and GraalVM
Discover Quarkus and GraalVMDiscover Quarkus and GraalVM
Discover Quarkus and GraalVM
Romain Schlick
 
Java 10 New Features
Java 10 New FeaturesJava 10 New Features
Java 10 New Features
Ali BAKAN
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java framework
SVDevOps
 
Java 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgradeJava 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgrade
Simone Bordet
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
Sylvain Wallez
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in java
kim.mens
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Julien Maitrehenry
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
Michel Schudel
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
Bruno Borges
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New Features
Haim Michael
 
Coroutines in Kotlin
Coroutines in KotlinCoroutines in Kotlin
Coroutines in Kotlin
Alexey Soshin
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
Aparna Pillai
 
Spring boot
Spring bootSpring boot
Spring boot
Pradeep Shanmugam
 
Java Concurrency Gotchas
Java Concurrency GotchasJava Concurrency Gotchas
Java Concurrency Gotchas
Alex Miller
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
Thomas Wuerthinger
 
Multithreading and Actors
Multithreading and ActorsMultithreading and Actors
Multithreading and Actors
Diego Pacheco
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
Hitesh-Java
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Frederik Mogensen
 
Java 9 New Features
Java 9 New FeaturesJava 9 New Features
Java 9 New Features
Ali BAKAN
 

What's hot (20)

Discover Quarkus and GraalVM
Discover Quarkus and GraalVMDiscover Quarkus and GraalVM
Discover Quarkus and GraalVM
 
Java 10 New Features
Java 10 New FeaturesJava 10 New Features
Java 10 New Features
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java framework
 
Java 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgradeJava 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgrade
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in java
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New Features
 
Coroutines in Kotlin
Coroutines in KotlinCoroutines in Kotlin
Coroutines in Kotlin
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
 
Spring boot
Spring bootSpring boot
Spring boot
 
Java Concurrency Gotchas
Java Concurrency GotchasJava Concurrency Gotchas
Java Concurrency Gotchas
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 
Multithreading and Actors
Multithreading and ActorsMultithreading and Actors
Multithreading and Actors
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Java 9 New Features
Java 9 New FeaturesJava 9 New Features
Java 9 New Features
 

Similar to Understanding Java Garbage Collection

DC JUG: Understanding Java Garbage Collection
DC JUG: Understanding Java Garbage CollectionDC JUG: Understanding Java Garbage Collection
DC JUG: Understanding Java Garbage Collection
Azul Systems, Inc.
 
Understanding Java Garbage Collection - And What You Can Do About It
Understanding Java Garbage Collection - And What You Can Do About ItUnderstanding Java Garbage Collection - And What You Can Do About It
Understanding Java Garbage Collection - And What You Can Do About It
Azul Systems Inc.
 
Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017
Azul Systems Inc.
 
Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017
Azul Systems Inc.
 
DotCMS Bootcamp: Enabling Java in Latency Sensitivie Environments
DotCMS Bootcamp: Enabling Java in Latency Sensitivie EnvironmentsDotCMS Bootcamp: Enabling Java in Latency Sensitivie Environments
DotCMS Bootcamp: Enabling Java in Latency Sensitivie Environments
Azul Systems Inc.
 
Enabling Java in Latency-Sensitive Applications
Enabling Java in Latency-Sensitive ApplicationsEnabling Java in Latency-Sensitive Applications
Enabling Java in Latency-Sensitive Applications
Azul Systems Inc.
 
Enabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul Systems
Enabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul SystemsEnabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul Systems
Enabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul Systems
zuluJDK
 
Azul yandexjune010
Azul yandexjune010Azul yandexjune010
Azul yandexjune010yaevents
 
Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)
Prashanth Kumar
 
Enabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive EnvironmentsEnabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive Environments
C4Media
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar
Maarten Balliauw
 
Andrea Di Persio
Andrea Di PersioAndrea Di Persio
Andrea Di Persio
CodeFest
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdf
DaniloQueirozMota
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian Bamboo
Dave Clark
 
Interoperable Clouds and How to Build (or Buy) Them
Interoperable Clouds and How to Build (or Buy) ThemInteroperable Clouds and How to Build (or Buy) Them
Interoperable Clouds and How to Build (or Buy) Them
Mark Voelker
 
How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013
Azul Systems Inc.
 
Postmortem of a uwp xaml application development
Postmortem of a uwp xaml application developmentPostmortem of a uwp xaml application development
Postmortem of a uwp xaml application development
David Catuhe
 
Garbage collection
Garbage collectionGarbage collection
Garbage collection
Mudit Gupta
 
UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015
Christopher Curtin
 
Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12
Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12
Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12sidg75
 

Similar to Understanding Java Garbage Collection (20)

DC JUG: Understanding Java Garbage Collection
DC JUG: Understanding Java Garbage CollectionDC JUG: Understanding Java Garbage Collection
DC JUG: Understanding Java Garbage Collection
 
Understanding Java Garbage Collection - And What You Can Do About It
Understanding Java Garbage Collection - And What You Can Do About ItUnderstanding Java Garbage Collection - And What You Can Do About It
Understanding Java Garbage Collection - And What You Can Do About It
 
Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017Understanding GC, JavaOne 2017
Understanding GC, JavaOne 2017
 
Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017Advancements ingc andc4overview_linkedin_oct2017
Advancements ingc andc4overview_linkedin_oct2017
 
DotCMS Bootcamp: Enabling Java in Latency Sensitivie Environments
DotCMS Bootcamp: Enabling Java in Latency Sensitivie EnvironmentsDotCMS Bootcamp: Enabling Java in Latency Sensitivie Environments
DotCMS Bootcamp: Enabling Java in Latency Sensitivie Environments
 
Enabling Java in Latency-Sensitive Applications
Enabling Java in Latency-Sensitive ApplicationsEnabling Java in Latency-Sensitive Applications
Enabling Java in Latency-Sensitive Applications
 
Enabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul Systems
Enabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul SystemsEnabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul Systems
Enabling Java in Latency Sensitive Applications by Gil Tene, CTO, Azul Systems
 
Azul yandexjune010
Azul yandexjune010Azul yandexjune010
Azul yandexjune010
 
Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)
 
Enabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive EnvironmentsEnabling Java in Latency Sensitive Environments
Enabling Java in Latency Sensitive Environments
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar
 
Andrea Di Persio
Andrea Di PersioAndrea Di Persio
Andrea Di Persio
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdf
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian Bamboo
 
Interoperable Clouds and How to Build (or Buy) Them
Interoperable Clouds and How to Build (or Buy) ThemInteroperable Clouds and How to Build (or Buy) Them
Interoperable Clouds and How to Build (or Buy) Them
 
How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013
 
Postmortem of a uwp xaml application development
Postmortem of a uwp xaml application developmentPostmortem of a uwp xaml application development
Postmortem of a uwp xaml application development
 
Garbage collection
Garbage collectionGarbage collection
Garbage collection
 
UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015
 
Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12
Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12
Garbage Collection, Tuning And Monitoring JVM In EBS 11i And R12
 

More from Azul Systems Inc.

Zulu Embedded Java Introduction
Zulu Embedded Java IntroductionZulu Embedded Java Introduction
Zulu Embedded Java Introduction
Azul Systems Inc.
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
Azul Systems Inc.
 
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gapObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
Azul Systems Inc.
 
Priming Java for Speed at Market Open
Priming Java for Speed at Market OpenPriming Java for Speed at Market Open
Priming Java for Speed at Market Open
Azul Systems Inc.
 
Azul Systems open source guide
Azul Systems open source guideAzul Systems open source guide
Azul Systems open source guide
Azul Systems Inc.
 
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Azul Systems Inc.
 
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and ToolsIntelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Azul Systems Inc.
 
The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014
Azul Systems Inc.
 
Push Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and ZingPush Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and ZingAzul Systems Inc.
 
Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...
Azul Systems Inc.
 
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Azul Systems Inc.
 
Java vs. C/C++
Java vs. C/C++Java vs. C/C++
Java vs. C/C++
Azul Systems Inc.
 
What's Inside a JVM?
What's Inside a JVM?What's Inside a JVM?
What's Inside a JVM?
Azul Systems Inc.
 
The Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVMThe Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVM
Azul Systems Inc.
 
Towards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding StyleTowards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding Style
Azul Systems Inc.
 
Experiences with Debugging Data Races
Experiences with Debugging Data RacesExperiences with Debugging Data Races
Experiences with Debugging Data Races
Azul Systems Inc.
 
Lock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash TableLock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash Table
Azul Systems Inc.
 
How NOT to Write a Microbenchmark
How NOT to Write a MicrobenchmarkHow NOT to Write a Microbenchmark
How NOT to Write a Microbenchmark
Azul Systems Inc.
 
The Art of Java Benchmarking
The Art of Java BenchmarkingThe Art of Java Benchmarking
The Art of Java Benchmarking
Azul Systems Inc.
 
Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, PolandAzul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
Azul Systems Inc.
 

More from Azul Systems Inc. (20)

Zulu Embedded Java Introduction
Zulu Embedded Java IntroductionZulu Embedded Java Introduction
Zulu Embedded Java Introduction
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
 
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gapObjectLayout: Closing the (last?) inherent C vs. Java speed gap
ObjectLayout: Closing the (last?) inherent C vs. Java speed gap
 
Priming Java for Speed at Market Open
Priming Java for Speed at Market OpenPriming Java for Speed at Market Open
Priming Java for Speed at Market Open
 
Azul Systems open source guide
Azul Systems open source guideAzul Systems open source guide
Azul Systems open source guide
 
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
Start Fast and Stay Fast - Priming Java for Market Open with ReadyNow!
 
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and ToolsIntelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
Intelligent Trading Summit NY 2014: Understanding Latency: Key Lessons and Tools
 
The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014The evolution of OpenJDK: From Java's beginnings to 2014
The evolution of OpenJDK: From Java's beginnings to 2014
 
Push Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and ZingPush Technology's latest data distribution benchmark with Solarflare and Zing
Push Technology's latest data distribution benchmark with Solarflare and Zing
 
Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...Webinar: Zing Vision: Answering your toughest production Java performance que...
Webinar: Zing Vision: Answering your toughest production Java performance que...
 
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
Speculative Locking: Breaking the Scale Barrier (JAOO 2005)
 
Java vs. C/C++
Java vs. C/C++Java vs. C/C++
Java vs. C/C++
 
What's Inside a JVM?
What's Inside a JVM?What's Inside a JVM?
What's Inside a JVM?
 
The Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVMThe Java Evolution Mismatch - Why You Need a Better JVM
The Java Evolution Mismatch - Why You Need a Better JVM
 
Towards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding StyleTowards a Scalable Non-Blocking Coding Style
Towards a Scalable Non-Blocking Coding Style
 
Experiences with Debugging Data Races
Experiences with Debugging Data RacesExperiences with Debugging Data Races
Experiences with Debugging Data Races
 
Lock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash TableLock-Free, Wait-Free Hash Table
Lock-Free, Wait-Free Hash Table
 
How NOT to Write a Microbenchmark
How NOT to Write a MicrobenchmarkHow NOT to Write a Microbenchmark
How NOT to Write a Microbenchmark
 
The Art of Java Benchmarking
The Art of Java BenchmarkingThe Art of Java Benchmarking
The Art of Java Benchmarking
 
Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, PolandAzul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
 

Recently uploaded

Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 

Recently uploaded (20)

Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 

Understanding Java Garbage Collection

  • 1. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Understanding Java Garbage Collection and what you can do about it Matt Schuetze, Director of Product Management Azul Systems A presentation to the New York Java Special Interest Group March 27, 2014
  • 2. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 This Talk’s Purpose / Goals This talk is focused on GC education This is not a “how to use flags to tune a collector” talk This is a talk about how the “GC machine” works Purpose: Once you understand how it works, you can use your own brain... You’ll learn just enough to be dangerous... The “Azul makes the world’s greatest GC” stuff will only come at the end, I promise...
  • 3. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 About Azul Systems We deal with Java performance issues on a daily basis Our solutions focus on consistent response time under load We enable practical, full use of hardware resources As a result, we often help characterize problems In many/most cases, it’s not the database, app, or network - it’s the JVM, or the system under it… GC Pauses, OS or Virtualization “hiccups”, swapping, etc. We use and provide simple tools to help discover what’s going on in a JVM and the underlying platform Focus on measuring JVM/Platform behavior with your app Non-intrusive, no code changes, easy to add
  • 4. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 About Azul We make scalable Virtual Machines Have built “whatever it takes to get job done” since 2002 3 generations of custom SMP Multi-core HW (Vega) Now Pure software for commodity x86 (Zing) “Industry firsts” in Garbage collection, elastic memory, Java virtualization, memory scale Vega C4
  • 5. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 High level agenda GC fundamentals and key mechanisms Some GC terminology & metrics Classifying current commercially available collectors Why Stop-The-World is a problem The C4 collector: What a solution to STW looks like...
  • 6. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Is GC still a real problem? “The one big challenge left for Java on performance is containing pause times. Latency jitter is the only reason to ever use other languages inside Twitter.” --Adam Messinger, CTO of Twitter Citation: Oracle Java 8 global launch video, March 25, 2014
  • 7. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 GC behavior of a JVM with little heap tuning -Xms1024m -Xmx1024m -XX:NewSize=200m -XX:MaxNewSize=200m New generation GC pauses on average occurred every 6 seconds and lasted less than 50 milliseconds. Any single pause is unnoticeable to the users waiting for the server’s response. Old generation pauses on average occurred less than once per hour but lasted as much as almost 8 seconds on average with a single outlier even reaching 19 seconds. Many Old Generation Full GC (the grey lines) Blue = Heap occupancy Heap used over a period of about 25 hours:
  • 8. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Memory use • How many of you use heap sizes of: • more than ½ GB? • more than 1 GB? • more than 2 GB? • more than 4 GB? • more than 10 GB? • more than 20 GB? • more than 50 GB? • more than 100 GB?
  • 9. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Why should you understand (at least a little) how GC works?
  • 10. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Much of what People seem to “know” about Garbage Collection is wrong In many cases, it’s much better than you may think GC is extremely efficient. Much more so that malloc() Dead objects cost nothing to collect GC will find all the dead objects (including cyclic graphs) ... In many cases, it’s much worse than you may think Yes, it really does stop for ~1 sec per live GB No, GC does not mean you can’t have memory leaks No, those pauses you eliminated from your 20 minute test are not gone ...
  • 11. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Trying to solve GC problems in application architecture is like throwing knives You probably shouldn’t do it blindfolded It takes practice to do it well without hurting people You can get very good at it, but do you really want to? Will all the code you leverage be as good as yours? Examples of “GC friendly” techniques: Object pooling Off heap storage Distributed heaps ... (In most cases, you end up building your own garbage collector)
  • 12. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Some GC Terminology
  • 13. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 A Concurrent Collector performs garbage collection work concurrently with the application’s own execution A Parallel Collector uses multiple CPUs to perform garbage collection Classifying a collector’s operation An Incremental collector performs a garbage collection operation or phase as a series of smaller discrete operations with (potentially long) gaps in between A Stop-the-World collector performs garbage collection while the application is completely stopped Mostly means sometimes it isn’t (usually means a different fall back mechanism exists)
  • 14. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Compact Over time, heap will get “swiss cheesed”: contiguous dead space between objects may not be large enough to fit new objects (aka “fragmentation”) Compaction moves live objects together to reclaim contiguous empty space (aka “relocate”) Compaction has to correct all object references to point to new object locations (aka “remap”) Remap scan must cover all references that could possibly point to relocated objects Note: work is generally linear to “live set”
  • 15. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Copy A copying collector moves all lives objects from a “from” space to a “to” space & reclaims “from” space At start of copy, all objects are in “from” space and all references point to “from” space. Start from “root” references, copy any reachable object to “to” space, correcting references as we go At end of copy, all objects are in “to” space, and all references point to “to” space Note: work generally linear to “live set”
  • 16. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Generational Collection Weak Generational Hypothesis; “most objects die young” Focus collection efforts on young generation: Use a moving collector: work is linear to the live set The live set in the young generation is a small % of the space Promote objects that live long enough to older generations Only collect older generations as they fill up “Generational filter” reduces rate of allocation into older generations Tends to be (order of magnitude) more efficient Great way to keep up with high allocation rate Practical necessity for keeping up with processor throughput
  • 17. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Why Generational Garbage Collection Here is an example of such data. Y axis = number of bytes allocated; X access = number of bytes allocated over time Having to mark and compact all the objects in a JVM is inefficient. As more and more objects are allocated, the list of objects grows and grows leading to longer and longer garbage collection time. However, empirical analysis of applications has shown that most objects are short lived. This is called the ‘weak generational hypothesis’ As you can see, fewer and fewer objects remain allocated over time. In fact most objects have a very short life as shown by the higher values on the left side of the graph Bytes allocated over time X = number of Bytes allocated; Y = number of Bytes allocated over time
  • 18. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Mutator Your program… Parallel Can use multiple CPUs Concurrent Runs concurrently with program Pause A time duration in which the mutator is not running any code Stop-The-World (STW) Something that is done in a pause Monolithic Stop-The-World Something that must be done in it’s entirety in a single pause Useful terms for discussing garbage collection Generational Collects young objects and long lived objects separately. Promotion Allocation into old generation Marking Finding all live objects Sweeping Locating the dead objects Compaction Defragments heapMoves objects in memory. Remaps all affected references. Frees contiguous memory regions
  • 19. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Useful metrics for discussing garbage collection Cycle time How long it takes the collector to free up memory Marking time How long it takes the collector to find all live objects Sweep time How long it takes to locate dead objects * Relevant for Mark-Sweep Compaction time How long it takes to free up memory by relocating objects * Relevant for Mark-Compact Heap population (aka Live set) How much of your heap is alive Allocation rate How fast you allocate Mutation rate How fast your program updates references in memory Heap Shape The shape of the live object graph * Hard to quantify as a metric... Object Lifetime How long objects live
  • 20. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Classifying common collectors
  • 21. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 The typical combos in commercial server JVMS Young generation usually uses a copying collector Young generation is usually monolithic, stop-the-world Old generation usually uses Mark/Sweep/Compact Old generation may be STW, or Concurrent, or mostly- Concurrent, or Incremental-STW, or mostly- Incremental-STW
  • 22. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 HotSpot™ ParallelGC Collector mechanism classification Monolithic Stop-the-world copying NewGen Monolithic Stop-the-world Mark/Sweep/Compact OldGen
  • 23. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 HotSpot™ ConcMarkSweepGC (aka CMS) Collector mechanism classification Monolithic Stop-the-world copying NewGen (ParNew) Mostly Concurrent, non-compacting OldGen (CMS) Mostly Concurrent marking Mark concurrently while mutator is running Track mutations in card marks Revisit mutated cards (repeat as needed) Stop-the-world to catch up on mutations, ref processing, etc. Concurrent Sweeping Does not Compact (maintains free list, does not move objects) Fallback to Full Collection (Monolithic Stop the world). Used for Compaction, etc.
  • 24. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 HotSpot™ G1GC (aka “Garbage First”) Collector mechanism classification Monolithic Stop-the-world copying NewGen Mostly Concurrent, OldGen marker Mostly Concurrent marking Stop-the-world to catch up on mutations, ref processing, etc. Tracks inter-region relationships in remembered sets Stop-the-world mostly incremental compacting old gen Objective: “Avoid, as much as possible, having a Full GC…” Compact sets of regions that can be scanned in limited time Delay compaction of popular objects, popular regions Fallback to Full Collection (Monolithic Stop the world). Used for compacting popular objects, popular regions, etc.
  • 25. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Delaying the inevitable Some form of copying/compaction is inevitable in practice And compacting anything requires scanning/fixing all references to it Delay tactics focus on getting “easy empty space” first This is the focus for the vast majority of GC tuning Most objects die young [Generational] So collect young objects only, as much as possible. Hope for short STW. But eventually, some old dead objects must be reclaimed Most old dead space can be reclaimed without moving it [e.g. CMS] track dead space in lists, and reuse it in place But eventually, space gets fragmented, and needs to be moved Much of the heap is not “popular” [e.g. G1, “Balanced”] A non popular region will only be pointed to from a small % of the heap So compact non-popular regions in short stop-the-world pauses But eventually, popular objects and regions need to be compacted Young generation pauses are only small because heaps are tiny A 200GB heap will regularly have several GB of live young stuff…
  • 26. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Monolithic-STW GC Problems
  • 27. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 One way to deal with Monolithic-STW GC
  • 28. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Another way to cope: “Creative Language” “Guarantee a worst case of X msec, 99% of the time” “Mostly” Concurrent, “Mostly” Incremental • Translation: “Will at times exhibit long monolithic stop- the-world pauses” “Fairly Consistent” • Translation: “Will sometimes show results well outside this range” “Typical pauses in the tens of milliseconds” • Translation: “Some pauses are much longer than tens of milliseconds”
  • 29. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Actually measuring things (e.g. jHiccup)
  • 30. ©2012 Azul Systems, Inc.©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
  • 31. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Getting past a monolithic-STW Garbage Collection world
  • 32. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 We need to solve the right problems Scale is artificially limited by responsiveness Responsiveness must be unlinked from scale: Heap size, Live Set size, Allocation rate, Mutation rate Transaction Rate, Concurrent users, Data set size, etc. Responsiveness must be continually sustainable Can’t ignore “rare” events Eliminate all Stop-The-World Fallbacks At modern server scales, any STW fall back is a failure
  • 33. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 The problems that need solving (areas where the state of the art needs improvement) Robust Concurrent Marking In the presence of high mutation and allocation rates Cover modern runtime semantics (e.g. weak refs, lock deflation) Compaction that is not monolithic-stop-the-world E.g. stay responsive while compacting ¼ TB heaps Must be robust: not just a tactic to delay STW compaction [current “incremental STW” attempts fall short on robustness] Young-Gen that is not monolithic-stop-the-world Stay responsive while promoting multi-GB data spikes Concurrent or “incremental STW” may both be ok Surprisingly little work done in this specific area
  • 34. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Azul’s “C4” Collector Continuously Concurrent Compacting Collector Concurrent guaranteed-single-pass marker Oblivious to mutation rate Concurrent ref (weak, soft, final) processing Concurrent Compactor Objects moved without stopping mutator References remapped without stopping mutator Can relocate entire generation (New, Old) in every GC cycle Concurrent, compacting old generation Concurrent, compacting new generation No stop-the-world fallback Always compacts, and always does so concurrently
  • 35. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 C4 algorithm highlights Same core mechanism used for both generations Concurrent Mark-Compact A Loaded Value Barrier (LVB) is central to the algorithm Every heap reference is verified as “sane” when loaded “Non-sane” refs are caught and fixed in a self-healing barrier Refs that have not yet been “marked through” are caught Guaranteed single pass concurrent marker Refs that point to relocated objects are caught Lazily (and concurrently) remap refs, no hurry Relocation and remapping are both concurrent Uses “quick release” to recycle memory Forwarding information is kept outside of object pages Physical memory released immediately upon relocation “Hand-over-hand” compaction without requiring empty memory
  • 36. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 GC Tuning
  • 37. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Java GC tuning is “hard”… Examples of actual command line GC tuning parameters: Java -Xmx12g -XX:MaxPermSize=64M -XX:PermSize=32M -XX:MaxNewSize=2g -XX:NewSize=1g -XX:SurvivorRatio=128 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=0 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:ParallelGCThreads=12 -XX:LargePageSizeInBytes=256m … Java –Xms8g –Xmx8g –Xmn2g -XX:PermSize=64M -XX:MaxPermSize=256M -XX:-OmitStackTraceInFastThrow -XX:SurvivorRatio=2 -XX:-UseAdaptiveSizePolicy -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelSurvivorRemarkEnabled -XX:CMSMaxAbortablePrecleanTime=10000 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=63 -XX:+UseParNewGC –Xnoclassgc …
  • 38. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 The complete guide to Zing GC tuning • java -Xmx40g
  • 39. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Sustainable Throughput: The throughput achieved while safely maintaining service levels Unsustainable Throughout
  • 40. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Instance capacity test: “Fat Portal” HotSpot CMS: Peaks at ~ 3GB / 45 concurrent users * LifeRay portal on JBoss @ 99.9% SLA of 5 second response times
  • 41. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Instance capacity test: “Fat Portal” C4: still smooth @ 800 concurrent users
  • 42. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Fun with jHiccup
  • 43. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
  • 44. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014
  • 45. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 How is Azul’s Java Platform Different? Same JVM standard - Licensed JCK compliant JVM for JSE6 and JSE7. JSE 8 in flight.* Derived from same base as Hotspot, fully Java compatible passes Java Compatibility Kit (JCK) server-level compatibility (~53000 tests ) A different approach Garbage is good! Designed with insight that worst case must eventually happen Unique values Highly scalable … 100s GB with consistent low pause times – other JVMs will have longer “stop-the-world” pauses in proportion to size of JVM and memory allocation rate Elastic memory … insurance for JVMs to handle dynamic load – unlike other JVMs which are rigidly tuned Collects New Garbage and Old Garbage concurrently with running application threads … there is no “stop-the-world” for GC purposes (you will only see extremely short pause times to reach safepoints) – unlike other JVMs which will eventually stop-the-world. Compacts Memory concurrently with your application threads running … Zing will move objects without “stop-the-world” or single-threading – which is a major issue with other JVMs Measuring pause times from FIRST thread stopped (unlike other JVMs) Rich non-intrusive production visibility with ZVision and ZVRobot WYTIWYG (What You Test Is What You Get) * Zing for JSE8 in dev with JCK 8 in QA as of today’s talk
  • 46. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 "We were originally designed for extremely large heaps, and some people use us in huge-data-set situations – which is why a typical 5GB or 10GB heap that challenges most JVMs is a walk in the park for Zing"
  • 47. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Some people have big problems to solve in the big data world and Zing doesn’t pause for GC Tests were performed with varying live data set sizes, and a 250GB heap: 55 GB: • Zing: 35 milliseconds; Hotspot G1: 357 seconds 110 GB: • Zing: 75 milliseconds; Hotspot G1: 225 seconds 215 GB: • Zing: 20 milliseconds; Hotspot G1: 1,055 seconds JavaOne 2012: Neil Ferguson, Causata: CON4623 - Big RAM: How Java Developers Can Fully Exploit Massive Amounts of RAM
  • 48. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 What you can expect (from Zing) in the low latency world Assuming individual transaction work is “short” (on the order of 1 msec), and assuming you don’t have 100s of runnable threads competing for 10 cores... “Easily” get your application to < 10 msec worst case With some tuning, 2-3 msec worst case Can go to below 1 msec worst case... May require heavy tuning/tweaking Mileage WILL vary
  • 49. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Oracle HotSpot (pure newgen) Zing Low latency trading application
  • 50. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Low latency - Drawn to scale Oracle HotSpot (pure newgen) Zing
  • 51. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Q & A GC : G. Tene, B. Iyengar and M. Wolf C4: The Continuously Concurrent Compacting Collector In Proceedings of the international symposium on Memory management, ISMM’11, ACM, pages 79-88 Jones, Richard; Hosking, Antony; Moss, Eliot (25 July 2011). The Garbage Collection Handbook: The Art of Automatic Memory Management. CRC Press. ISBN 1420082795. jHiccup: http://www.azulsystems.com/dev_resources/jhiccup
  • 52. ©2014 Azul Systems, Inc. presented at NYJavaSIG, March 2014 Thanks for Attending www.azulsystems.com Grab a pen! Take a card! To contact the speaker email: Matt Schuetze, Director of Product Management mschuetze@azulsystems.com Refer to NYJavaSIG