How to set the directory where JVM stores MDMP files

Bob Vandette bob.vandette at
Tue Oct 1 13:15:16 UTC 2019

It looks to me that  core dumps (Linux) and MDMP files (Windows) are written to the current directory and there
is no way to override this without building a custom JDK.

I only looked at the JDK14 sources (os_linux.cpp and os_windows.cpp) but I suspect the same is true on JDK11.

Is there an option of having your program change the current directory?


> On Oct 1, 2019, at 8:13 AM, Reto Merz <reto.merz at> wrote:
> Hello,
> (Not sure whether this is the correct place to ask this, so please forgive me if not.)
> A) I want to change the location where the MDMP-file is created. I set the following JVM args:
>        -XX:HeapDumpPath=C:/the_dumps
>        -XX:ErrorFile=C:/the_dumps/hs_err_pid%p.log
> According to a old stackoverflow answer [1] this should work.
> But the MDMP-file is still created in the working directory. Is it possible to change it?
> Below you will find the code to cause a crash [2].
> Tested with java -version
>    openjdk version "11.0.4" 2019-07-16
>    OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
>    OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
> B) If there is a way to change the MDMP-file location, does the same apply for linux?
> As far as I know linux will create a CORE file (instead of a MDMP).
> Thanks
> Reto Merz
> [1]
> [2] Code to crash JVM:
> import java.lang.reflect.*;
> public class Main {
>    public static void main(String[] args) throws Exception {
>        Class<?> clazz = Class.forName("sun.misc.Unsafe");
>        Field field = clazz.getDeclaredField("theUnsafe");
>        field.setAccessible(true);
>        Object unsafe = field.get(null);
>        Method putAddress = clazz.getDeclaredMethod("putAddress", long.class, long.class);
>        putAddress.invoke(unsafe, 0L, 0L);
>    }
> }

More information about the jdk-dev mailing list