有没有办法获得总设备内存?我需要它来优化

2024-04-18

我有一个可以包含静态数据的 lrucache,这样即使我的应用程序在用户返回时关闭,他也可以更快地找到数据。

然而,这需要大约 10-15 MB 的内存,所以我想创建一个像这样的 if 分支

if(deviceOverallRAM > treshold)
      preserve static memory on app exit
else
      clear static memory on app exit

那么,我可以通过一些隐藏的 api 获取设备的内存吗?阈值的最佳值是多少?


要在 API 16 之前执行此操作,您必须读取 Android 内核的 proc/meminfo 文件:

 public long getTotalMemory() {  

    String str1 = "/proc/meminfo";
    String str2;        
    String[] arrayOfString;
    long initial_memory = 0;
    try {
    FileReader localFileReader = new FileReader(str1);
    BufferedReader localBufferedReader = new BufferedReader(    localFileReader, 8192);
    str2 = localBufferedReader.readLine();//meminfo
    arrayOfString = str2.split("\\s+");
    for (String num : arrayOfString) {
    Log.i(str2, num + "\t");
    }
    //total Memory
    initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;   
    localBufferedReader.close();
    return initial_memory;
    } 
    catch (IOException e) 
    {       
        return -1;
    }
  }  

Source: 这个问题 https://stackoverflow.com/questions/9869761/read-android-device-total-ammount-of-ram-with-proc-meminfo

However,在 API 16 及更高版本中,您可以使用以下代码来检索总内存:

ActivityManager actManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo memInfo = new ActivityManager.MemoryInfo();
actManager.getMemoryInfo(memInfo);
long totalMemory = memInfo.totalMem;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法获得总设备内存?我需要它来优化 的相关文章

随机推荐