package com.elphin.framework.util; import java.lang.reflect.Method; /** * Created with IntelliJ IDEA. * User: elphin * Date: 13-8-8 * Time: 下午5:24 * To change this template use File | Settings | File Templates. */ public class VMRuntimeUtil { //VMRuntime.getRuntime().setMinimumHeapSize public static void setMinimumHeapSize(long size) { try { Class VMRuntimeClass = Class.forName("dalvik.system.VMRuntime"); Method getRuntimeMethod = VMRuntimeClass.getMethod("getRuntime", new Class[0]); Class[] arrayOfClass = new Class[1]; arrayOfClass[0] = Long.TYPE; Method setMinimumHeapSizeMethod = VMRuntimeClass.getMethod("setMinimumHeapSize", arrayOfClass); Object runtimeObject = getRuntimeMethod.invoke(null, new Object[0]); Object[] arrayOfObject = new Object[1]; arrayOfObject[0] = Long.valueOf(size); setMinimumHeapSizeMethod.invoke(runtimeObject, arrayOfObject); } catch (Throwable localThrowable) { localThrowable.printStackTrace(); } } public static long getMinimumHeapSize() { try { Class VMRuntimeClass = Class.forName("dalvik.system.VMRuntime"); Method getRuntimeMethod = VMRuntimeClass.getMethod("getRuntime", new Class[0]); Class[] arrayOfClass = new Class[1]; arrayOfClass[0] = Long.TYPE; Method getMinimumHeapSizeMethod = VMRuntimeClass.getMethod("getMinimumHeapSize", new Class[0]); Object runtimeObject = getRuntimeMethod.invoke(null, new Object[0]); Long ret = (Long)getMinimumHeapSizeMethod.invoke(runtimeObject, new Object[0]); android.util.Log.e("BAIDUMAP_PERFM","getMinimumHeapSizeMethod:"+ret.longValue()); return ret.longValue(); } catch (Throwable localThrowable) { localThrowable.printStackTrace(); } return 0; } public static float getTargetHeapUtilization() { try { Class VMRuntimeClass = Class.forName("dalvik.system.VMRuntime"); Method getRuntimeMethod = VMRuntimeClass.getMethod("getRuntime", new Class[0]); Class[] arrayOfClass = new Class[1]; arrayOfClass[0] = Long.TYPE; Method getTargetHeapUtilization = VMRuntimeClass.getMethod("getTargetHeapUtilization", new Class[0]); Object runtimeObject = getRuntimeMethod.invoke(null, new Object[0]); Float ret = (Float)getTargetHeapUtilization.invoke(runtimeObject, new Object[0]); android.util.Log.e("BAIDUMAP_PERFM","getTargetHeapUtilization:"+ret.floatValue()); return ret.floatValue(); } catch (Throwable localThrowable) { localThrowable.printStackTrace(); } return 0; } public static void setTargetHeapUtilization(float value) { try { Class VMRuntimeClass = Class.forName("dalvik.system.VMRuntime"); Method getRuntimeMethod = VMRuntimeClass.getMethod("getRuntime", new Class[0]); Class[] arrayOfClass = new Class[1]; arrayOfClass[0] = Float.TYPE; Method setTargetHeapUtilizationMethod = VMRuntimeClass.getMethod("setTargetHeapUtilization", arrayOfClass); Object runtimeObject = getRuntimeMethod.invoke(null, new Object[0]); Object[] arrayOfObject = new Object[1]; arrayOfObject[0] = Float.valueOf(value); setTargetHeapUtilizationMethod.invoke(runtimeObject, arrayOfObject); } catch (Throwable localThrowable) { localThrowable.printStackTrace(); } } }