package net.dev123.yibo.common;
import android.os.Debug;
import android.util.Log;
public class MemoryManager {
public static final String TAG = "MemoryManager";
public static final int REMAIN_MEMORY_LEVEL_1 = 1024 * 1024; //回收内存的条件,空闲内存值;
public static void trace() {
long maxMemory = Runtime.getRuntime().maxMemory();
long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
if (Constants.DEBUG) {
Log.d(TAG, "Trace Runtime Memory: Max=" + maxMemory/1024/1024 + "MB"
+ ", Total=" + totalMemory/1024 + "KB"
+ ", Free=" + freeMemory/1024 + "KB" );
Log.d(TAG, "Trace Native Memory: Total=" + Debug.getNativeHeapSize()/1024 + "KB"
+ ", Free=" + Debug.getNativeHeapFreeSize()/1024 + "KB"
+ ", Allocated=" + Debug.getNativeHeapAllocatedSize()/1024 + "KB" );
}
}
/*
* 获得Java虚拟机的总内存
*/
public static long getJavaAvaiableMemorySize() {
return Runtime.getRuntime().totalMemory();
}
/*
* 获得Java虚拟机未分配的内存
*/
public static long getJavaFreeMemorySize() {
return Runtime.getRuntime().freeMemory();
}
/*
* 获得可供Native分配的最大内存数
*/
public static long getAvailableNativeMemorySize() {
if (Constants.DEBUG) trace();
return Runtime.getRuntime().maxMemory() // 允许的最大内存
- Runtime.getRuntime().totalMemory(); //Java Heap 所占用的内存
//+ Debug.getNativeHeapFreeSize(); //Native Heap 已分配的内存
}
/*
* 判断是否需要进行内存回收
*/
public static boolean isNeedReclaim() {
boolean isNeedRecaim = false;
if (getJavaFreeMemorySize() < REMAIN_MEMORY_LEVEL_1) {
isNeedRecaim = true;
}
return isNeedRecaim;
}
}