2012-06-07 3 views
4

как вы, друзья, надеетесь на лучшее. друзья, я хочу, как много памяти у моего устройства Android и сколько памяти используется активная память, неактивная память, свободная память и проводная память в MB Я прошел через this link, который говорит об этом, анализируя «/ system/бен/кошка»,„/ Proc/MemInfo“мы можем получить вещи, о которых я говорил выше, да и я получаю все вещи, но я получаю длинную строку, где у меня есть всеandroid - Как получить использование памяти моего устройства Android

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; 
} 

Я хочу, чтобы Я могу разбить эту строку динамически для diff. устройства или есть ли другой способ, чтобы узнать выше вещи

я также прошел через this, но это также не то, что использовать полный .. я легко смог получить доступную информацию памяти, но мне нужно все четыре

любая помощь глубоко признателен спасибо в adavance

+0

Посмотрите это ... http: //stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android –

ответ

6
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?

Это все, что вам нужно;)

+0

прежде всего большое спасибо Thomas K, это даст полное использование памяти, но я хочу знать, что использование активной памяти неактивное использование свободной памяти и проводной памяти , поэтому отсюда я могу получить свободную память, что я могу получить с помощью диспетчера активности, тогда все три говорят о памяти использование pidMemoryInfo.getTotalPrivateDirty(): 3824 pidMemoryInfo.getTotalPss(): 4858 pidMemoryInfo.getTotalSharedDirty(): 10292 – user1346836

+0

пожалуйста, вы можете помочь мне, как я могу получить там четыре вещи из этого или выше код .. я чувствую, что мы можем получить я пытаюсь и пытается, но на самом деле не в состоянии добраться до решения, это wo uld быть очень полезным, если вы можете помочь мне в этом – user1346836

Смежные вопросы