Returns used(max) memory in MB : Runtime « Development Class « Java

Returns used(max) memory in MB

 * Copyright 2007-2010 the original author or authors.
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.

//package org.impalaframework.util;

import java.text.DecimalFormat;
import java.text.NumberFormat;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

 * @author Phil Zoio
public class MemoryUtils {

    private static final Log logger = LogFactory.getLog(MemoryUtils.class);

     * Returns used memory in MB
    public static double usedMemory() {
        Runtime runtime = Runtime.getRuntime();
        return usedMemory(runtime);

     * Returns max memory available MB
    public static double maxMemory() {
        Runtime runtime = Runtime.getRuntime();
        return maxMemory(runtime);
    static double usedMemory(Runtime runtime) {
        long totalMemory = runtime.totalMemory();
        long freeMemory = runtime.freeMemory();
        double usedMemory = (double)(totalMemory - freeMemory) / (double)(1024 * 1024);
        return usedMemory;

    static double maxMemory(Runtime runtime) {
        long maxMemory = runtime.maxMemory();
        double memory = (double)maxMemory / (double)(1024 * 1024);
        return memory;

    public static void printMemoryInfo() {
        StringBuffer buffer = getMemoryInfo();;

    public static StringBuffer getMemoryInfo() {
        StringBuffer buffer = new StringBuffer();

        Runtime runtime = Runtime.getRuntime();
        double usedMemory = usedMemory(runtime);
        double maxMemory = maxMemory(runtime);

        NumberFormat f = new DecimalFormat("###,##0.0");
        String lineSeparator = System.getProperty("line.separator");
        buffer.append("Used memory: " + f.format(usedMemory) + "MB").append(lineSeparator);
        buffer.append("Max available memory: " + f.format(maxMemory) + "MB").append(lineSeparator);
        return buffer;

    public static void freeMemory() {



Related examples in the same category

2.Get Number of Available Processors
3.Execute system command
4.Determine when the application is about to exit
5.Getting the Size of the Java Memory Heap
6.Read all information that the child process sends to its standard output stream
7.Execute a command from code
8.Execute a command with more than one argument
9.Launch a Unix script with Java
10.Read output from a Command execution
11.Send an Input to a Command
12.From Runtime.exec() to ProcessBuilder
13.Get current size of heap in bytes
14.Get maximum size of heap in bytes.
15.Get amount of free memory within the heap in bytes.
16.Minimize all programs on Windows to show the Desktop
17.Command and its arguments supplied in an array
18.Execute a command with an argument that contains a space
19.Execute a command with an argument that contains a space: use array
20.Calculate process elapsed time
21.Registering Shutdown Hooks for Virtual Machine
22.Get memory information
23.Returns a description of the JVM.
24.Returns a description of the operating system and processor configuration.
25.Returns a report of used and available memory.
26.Ensure that there is only one instance