JVM Boolean Options

(Last Updated On: January 4, 2018)

Introduction

While trying to generate a Java Heap Dump, I remembered there is one JVM option I could use for this purpose. Since I can’t always remember these options’ names, I went to the Oracle documentation.

The problem

So I could extract the following arguments:

-XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/jvm/dumps/

After limiting my Java Heap size to a value that I know it’s too low, I was expecting the Heap Dump to be generated whenever I got an OutOfMemoryError. But no dump got generated. I googled the issue, checked for JVM bugs but the only reported issue was a miss-usage when you give the JVM options after the Java Main class, but that wasn’t my case.

The fix

Then I stumbled on a slightly different version of my original setting (the one that I copy-pasted from the Oracle site):

-XX:+HeapDumpOnOutOfMemoryError

Then, I remember I once read about Boolean JVM options, and the very same Oracle site details this usage:

“Boolean options are turned on with -XX:+ and turned off with -XX:-.”

I think the Oracle JVM options table should show the “+” version, since that’s usually what you are looking for, especially because it’s disabled by default (so the “-” version behaves like not giving it at all).

Conclusion

The HeapDumpPath should point to a folder, but if your setting is something like /logs/jvm/dumps/, and your OS only contains /logs/jvm, then you won’t get a “java_pid.hprof” file within the /logs/jvm/dumps/ folder, but a dump file in /logs/jvm/, as the JVM doesn’t create the missing folders (a.k.a mkdirs).

Subscribe to our Newsletter

* indicates required
10 000 readers have found this blog worth following!

If you subscribe to my newsletter, you'll get:
  • A free sample of my Video Course about running Integration tests at warp-speed using Docker and tmpfs
  • 3 chapters from my book, High-Performance Java Persistence, 
  • a 10% discount coupon for my book. 
Get the most out of your persistence layer!

Advertisements

Leave a Reply

Your email address will not be published. Required fields are marked *