While working on a Java software, I developed an utility that forked into background so that the VM could return instantly without using system-dependent tools like the shell or Debian's start-stop-daemon. My utility chose the right JVM (using the java.home system property) and started a new VM, calling the same main class with the same arguments, using the same classpath. Everything was fine.

However, when I came to using it on a somewhat more advanced setup, I came across a problem: JVM arguments weren't passed to the running VM. No memory configuration (-Xmx), no instrumentation (-agentlib)...