有没有办法看到Android上有多少内存是免费的?

时间:2013-08-23 12:41:47

标签: android graphics out-of-memory

我正在开发一款具有大量高分辨率图形的应用。它适用于我的平板电脑。但是,当我在智能手机上运行它时,我的内存异常就会出现问题。如果我拿出一些图形,它可以正常工作。

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

3 个答案:

答案 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量。