Mega Code Archive

 
Categories / Java / Development Class
 

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  *   * http://www.apache.org/licenses/LICENSE-2.0  *   * 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();         logger.info(buffer.toString());     }     public static StringBuffer getMemoryInfo() {         StringBuffer buffer = new StringBuffer();                  freeMemory();         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() {         System.gc();         System.runFinalization();     } }