/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
import java.io.*;
/**
* System-related utility functions.
*
* @author Klaus Meffert
* @since 3.2
*/
publicclass SystemKit {
/** String containing the CVS revision. Read out via reflection!*/
privatefinalstatic String CVS_REVISION = "$Revision: 1.8 $";
/**
* @return total memory available by the VM in megabytes.
*
* @author Klaus Meffert
* @since 3.2 (since 3.0 in GPGenotype)
*/
publicstaticdouble getTotalMemoryMB() {
return getTotalMemoryKB() / 1024;
}
/**
* @return total memory available by the VM in kilobytes.
*
* @author Klaus Meffert
* @since 3.2.1
*/
publicstaticdouble getTotalMemoryKB() {
return (Runtime.getRuntime().totalMemory() / 1024);
}
/**
* @return free memory available in the VM in megabytes.
*
* @author Klaus Meffert
* @since 3.2 (since 3.0 in GPGenotype)
*/
publicstaticdouble getFreeMemoryMB() {
return getFreeMemoryKB() / 1024;
}
/**
* @return free memory available in the VM in kilobytes.
*
* @author Klaus Meffert
* @since 3.2.1
*/
publicstaticdouble getFreeMemoryKB() {
return (Runtime.getRuntime().freeMemory() / 1024);
}
/**
* Nicifies a decimal string by cutting of all but two decimal places.
*
* @param a_mem the number to make nice
* @return nicified number as a string
*
* @since 3.3.1
*/
publicstatic String niceMemory(double a_mem) {
String freeMB = "" + a_mem;
int index = freeMB.indexOf('.');
int len = freeMB.length();
if (len - index > 2) {
freeMB = freeMB.substring(0, index + 2);
}
return freeMB;
}
/**
* Returns the first line of the result of a shell command.
* Taken from UUID.
*
* @param commands the commands to run
* @return the first line of the command
* @throws IOException
*
* @since 3.3.3
*/
static String getFirstLineOfCommand(String[] commands)
throws IOException {
Process p = null;
BufferedReader reader = null;
try {
p = Runtime.getRuntime().exec(commands);
reader = new BufferedReader(new InputStreamReader(
p.getInputStream()), 128);
return reader.readLine();
} finally {
if (p != null) {
if (reader != null) {
try {
reader.close();
} catch (IOException ex) {}
}
try {
p.getErrorStream().close();
} catch (IOException ex) {}
try {
p.getOutputStream().close();
} catch (IOException ex) {}
p.destroy();
}
}
}
}