package org.etsi.common; import java.io.BufferedReader; import java.io.InputStreamReader; public class MemoryTest { public static void main(String[] args) { try { int heap = 512; int heapIncrement = 128; while(startSecondJVM(heap+heapIncrement)==0){ heap+=heapIncrement; } System.out.println(heap-2*heapIncrement); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static int startSecondJVM(int heap) throws Exception { String separator = System.getProperty("file.separator"); String classpath = System.getProperty("java.class.path"); String path = System.getProperty("java.home") + separator + "bin" + separator + "java"; ProcessBuilder processBuilder = new ProcessBuilder(path, "-Xmx"+heap+"m", "-Xss128m", "-cp", classpath, MemoryTestDummy.class.getName()); Process process = processBuilder.start(); process.waitFor(); // BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); // String line; // while((line = br.readLine())!=null){ // System.out.println(":"+line); // } process.destroy(); return process.exitValue(); } }