code: public static void sigquitSelf() {
          try {
              Process p = Runtime.getRuntime().exec(
                      new String[] {"perl", "-e", "print getppid(). \"\n\";"});
              BufferedReader br =
                  new BufferedReader(new InputStreamReader(p.getInputStream()));
              String ppid = br.readLine();
              Runtime.getRuntime().exec(
                      new String[] {"sh", "-c", "kill -3 "+ppid}).waitFor();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
docs: Send this JVM process a SIGQUIT; giving a thread dump and possibly
  a heap histogram (if using -XX:+PrintClassHistogram).
  
  Used to automatically dump info, for example when a serious error
  is encountered. Would use 'jmap'/'jstack', but have seen JVM
  lockups -- perhaps due to lost thread wake signals -- when using
  those against Sun 1.5.0+03 64bit JVM.