android - 如何获取我的 android 设备的内存使用情况

Posted

技术标签:

【中文标题】android - 如何获取我的 android 设备的内存使用情况【英文标题】:android - How to get Memory usage of my android device 【发布时间】:2012-06-11 16:43:40 【问题描述】:

各位朋友过得怎么样,希望一切顺利。 朋友们,我想知道我的 android 设备有多少内存以及使用了多少内存 活动内存、非活动内存、空闲内存和有线内存(以 MB 为单位) 我已经通过this link 说通过解析“/system/bin/cat”、“/proc/meminfo”我们可以得到我上面提到的东西,是的,我得到了所有的东西,但我得到了一个我拥有一切的长字符串

 MemTotal:         377192 kB
  MemFree:           10448 kB
  Buffers:            1368 kB``
  Cached:            74276 kB
  SwapCached:            0 kB
  Active:           143116 kB
  Inactive:         177292 kB
  Active(anon):     118388 kB
  Inactive(anon):   137664 kB
  Active(file):      24728 kB
  Inactive(file):    39628 kB
    Unevictable:       10664 kB
    Mlocked:           10372 kB
    HighTotal:        190464 kB
    HighFree:            568 kB
    LowTotal:         186728 kB
    LowFree:            9880 kB
    SwapTotal:             0 kB
    SwapFree:              0 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        255440 kB
Mapped:            45816 kB
Shmem:               624 kB
Slab:              10952 kB
SReclaimable:       2456 kB
SUnreclaim:         8496 kB

我从这里得到的更大的字符串

 private String ReadCPUinfo()

ProcessBuilder cmd;
StringBuffer strMemory = new StringBuffer();
//final ActivityManager activityManager =(ActivityManager) 
context.getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager actvityManager = (ActivityManager) this.getSystemService(  
ACTIVITY_SERVICE );
ActivityManager.MemoryInfo mInfo = new ActivityManager.MemoryInfo ();
actvityManager.getMemoryInfo( mInfo );
strMemory.append("Available Memory : ");
strMemory.append(mInfo.availMem/1048576L);
strMemory.append("\n");
strMemory.append("\n");
String result=strMemory.toString();
try
String[] args = "/system/bin/cat", "/proc/meminfo";
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while(in.read(re) != -1)
System.out.println("itthhe   ====  ---   >>>>    "+new String(re));
result = result + new String(re);

in.close();
 catch(IOException ex)
ex.printStackTrace();

return result;

我想知道我是否可以动态地打破这个字符串以获得差异。设备或有没有其他方法可以找到以上的东西

我也经历过this ,但也不是完全使用 .. 我很容易获得可用的内存信息,但我需要全部四个

非常感谢任何帮助 提前感谢

【问题讨论】:

看到这个...***.com/questions/2298208/… 【参考方案1】:
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);

Log.i(TAG, " memoryInfo.availMem " + memoryInfo.availMem + "\n" );
Log.i(TAG, " memoryInfo.lowMemory " + memoryInfo.lowMemory + "\n" );
Log.i(TAG, " memoryInfo.threshold " + memoryInfo.threshold + "\n" );

List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();

Map<Integer, String> pidMap = new TreeMap<Integer, String>();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses)

    pidMap.put(runningAppProcessInfo.pid, runningAppProcessInfo.processName);


Collection<Integer> keys = pidMap.keySet();

for(int key : keys)

    int pids[] = new int[1];
    pids[0] = key;
    android.os.Debug.MemoryInfo[] memoryInfoArray = activityManager.getProcessMemoryInfo(pids);
    for(android.os.Debug.MemoryInfo pidMemoryInfo: memoryInfoArray)
    
        Log.i(TAG, String.format("** MEMINFO in pid %d [%s] **\n",pids[0],pidMap.get(pids[0])));
        Log.i(TAG, " pidMemoryInfo.getTotalPrivateDirty(): " + pidMemoryInfo.getTotalPrivateDirty() + "\n");
        Log.i(TAG, " pidMemoryInfo.getTotalPss(): " + pidMemoryInfo.getTotalPss() + "\n");
        Log.i(TAG, " pidMemoryInfo.getTotalSharedDirty(): " + pidMemoryInfo.getTotalSharedDirty() + "\n");
    

见How do I discover memory usage of my application in Android?

这就是你所需要的;)

【讨论】:

首先非常感谢Thomas K,这将给出正确的总内存使用情况,但我想知道活动内存使用情况非活动使用空闲内存和有线内存,因此我可以从这里获得空闲内存,即我能够使用活动管理器,然后所有三个都告诉内存使用 pidMemoryInfo.getTotalPrivateDirty(): 3824 pidMemoryInfo.getTotalPss(): 4858 pidMemoryInfo.getTotalSharedDirty(): 10292 你能帮我如何从这个或上面的代码中得到四件事..我觉得我们可以得到我正在尝试和尝试,但实际上无法找到解决方案,它如果您能在这方面帮助我,将会非常有帮助

以上是关于android - 如何获取我的 android 设备的内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章

[Android ]如何在 Android 应用上获取重定向 url

如何从网页 (HTML) 中获取相关信息到我的 Android 应用程序中?

如何在 Xamarin.Android 中获取指南针方向

Android - 如何在服务的后台获取位置更新

如何使用 devicepolicymanager 为我的设备所有者应用程序在 android 10 中获取 android.permission.ACCESS_BACKGROUND_LOCATION?

如何获取在 Android 中添加我的视图的容器的宽度