SystemKit.java Source code

Java tutorial

Introduction

Here is the source code for SystemKit.java

Source

/*
 * 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
 */
public class SystemKit {
    /** String containing the CVS revision. Read out via reflection!*/
    private final static 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)
     */
    public static double getTotalMemoryMB() {
        return getTotalMemoryKB() / 1024;
    }

    /**
     * @return total memory available by the VM in kilobytes.
     *
     * @author Klaus Meffert
     * @since 3.2.1
     */
    public static double 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)
     */
    public static double getFreeMemoryMB() {
        return getFreeMemoryKB() / 1024;
    }

    /**
     * @return free memory available in the VM in kilobytes.
     *
     * @author Klaus Meffert
     * @since 3.2.1
     */
    public static double 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
     */
    public static 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();
            }
        }
    }

}