DecimalFormat df = new DecimalFormat("#.#");
double total = (Runtime.getRuntime().totalMemory()) / (1024.0 * 1024);
double max = (Runtime.getRuntime().maxMemory()) / (1024.0 * 1024);
double free = (Runtime.getRuntime().freeMemory()) / (1024.0 * 1024);
double mayuse = Double.parseDouble(df.format(max - total + free));
double used = Double.parseDouble(df.format(total - free));
out.println("OS Name: " + System.getProperty("os.name") + "<br/>");
out.println("OS Version: " + System.getProperty("os.version") + "<br/>");
out.println("Architecture: " + System.getProperty("os.arch") + "<br/>");
out.println("Java Home: " + System.getProperty("java.home") + "<br/>");
out.println("JVM Version: " + System.getProperty("java.vm.version") + "<br/>");
out.println("JVM Vendor: " + System.getProperty("java.vm.vendor") + "<br/>");
out.println("JVM Max Memory: " + max + "MB<br/>");
out.println("JVM Total Memory: " + total + "MB<br/>");
out.println("JVM Usable Memory: " + mayuse + "MB<br/>");
out.println("JVM Used Memory: " + used + "MB<br/>");