Skip to content

Instantly share code, notes, and snippets.

@gvsmirnov
Last active January 6, 2017 17:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gvsmirnov/693baa320bd623b9d56e512d4e56568b to your computer and use it in GitHub Desktop.
Save gvsmirnov/693baa320bd623b9d56e512d4e56568b to your computer and use it in GitHub Desktop.
Garbage Collection Considered Harmful

I was like

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2017-01-06-171333.me.shenandoah-jdk9)
OpenJDK 64-Bit Server VM (build 9-internal+0-2017-01-06-171333.me.shenandoah-jdk9, mixed mode)

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -XX:+UseG1GC -Xmx256m Oom
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -XX:+UseConcMarkSweepGC -Xmx256m Oom
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -XX:+UseSerialGC -Xmx256m Oom
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -XX:+UseShenandoahGC -Xmx256m Oom
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

But then I was like

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -Xmx256m Oom

And the JVM was like

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

And I was like "Whoa, that hanged in jdk 8. But wait! The PS failed. 9 has G1 by default:

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -verbose:gc -Xmx256m Oom
[0.008s][info][gc] Using G1

So then I was like:

$ ./build/linux-x86_64-normal-server-release/images/jdk/bin/java -XX:+UseParallelGC -Xmx256m Oom

And then the JVM was like:

...

...

...

...

import java.util.*;
public class Oom {
public static void main(String[] args) {
List<Object> sink = new ArrayList<>();
while(true) {
sink.add(new Object());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment