我正在开发一款具有大量高分辨率图形的应用。它适用于我的平板电脑。但是,当我在智能手机上运行它时,我的内存异常就会出现问题。如果我拿出一些图形,它可以正常工作。
有没有办法检测我有多少内存?如果内存不足,我会知道不要使用所有图形。
答案 0 :(得分:0)
看看你的LogCat,它会在某些点显示你,有多少内存空闲(只需应用一个过滤器就可以获得适用于你的应用的消息)
答案 1 :(得分:0)
下面的方法将内存统计信息写入日志:
private static void dumpMemoryStateToLog() {
double heapSize = Runtime.getRuntime().totalMemory();
double heapRemaining = Runtime.getRuntime().freeMemory();
double nativeUsage = Debug.getNativeHeapAllocatedSize();
long maxMemory = Runtime.getRuntime().maxMemory();
double heapUsage = heapSize - heapRemaining;
double usedMemoryRatio = (heapUsage + nativeUsage) / maxMemory;
String msgFormat = "Memory state: max: %,d, heap: %,d, native usage: %,d, used memory: %,d%%";
int usedMemoryInPercents = (int) (usedMemoryRatio * 100);
Log.d(LOG_TAG, String.format(msgFormat, maxMemory, (int) heapUsage, (int) nativeUsage, usedMemoryInPercents));
}
答案 2 :(得分:0)
设备RAM无关紧要。您的过程可用内存很重要。
要查找应用程序的内存类,请在ActivityManager上调用getMemoryClass() - 它基本上以MB为单位返回进程的可用RAM量。