2013-08-23 91 views
0

我正在开发一个有很多高分辨率图形的应用程序。它在我的平板电脑上正常工作。但是,当我在智能手机上运行它时,会发现内存异常。如果我拿出一些图形,它可以正常工作。有没有办法看到Android上有多少内存空闲?

有没有办法来检测我有多少内存?如果内存不足,我会知道不使用所有的图形。

+0

在这里必须有一个bazillion的问题涵盖所有这个话题,我只是检查 - 27,143,212。完全可以编写代码在手机上显示与平板电脑上相同的图形。事实上,这是错误的措施,因为没有人说平板电脑比手机,GPU或其他任何东西都拥有更多的内存。因此,您所加载的内容的分辨率非常重要 - 但是,我的手机的分辨率高于平板电脑的分辨率。 – Simon

回答

0

设备RAM并不重要。您的流程的可用内存很重要。

要找出您的应用程序的内存类,请在ActivityManager上调用getMemoryClass() - 基本上以MB为单位返回您的进程的可用内存量。

0

看一看你的logcat的,就说明你在某些点上,多少内存是免费的(只应用一个过滤器,所以你刚才得到的消息,这适用于应用)

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)); 
    } 
相关问题