0

我正在开发一个具有大量高分辨率图形的应用程序。它在我的平板电脑上运行良好。但是,当我在智能手机上运行它时,我会出现内存不足异常。如果我取出一些图形,它工作正常。

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

4

3 回答 3

0

看看你的 LogCat,它会在某些时候向你显示有多少可用内存(只需应用一个过滤器,这样你就可以得到适用于你的应用程序的消息)

于 2013-08-23T12:44:56.047 回答
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));
    }
于 2013-08-23T12:45:09.493 回答
0

设备 RAM 无关紧要。进程的可用内存很重要。

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

于 2013-08-23T12:47:17.813 回答