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 应用程序中?
如何使用 devicepolicymanager 为我的设备所有者应用程序在 android 10 中获取 android.permission.ACCESS_BACKGROUND_LOCATION?