记忆似乎是一个很大的话题,我无法找到具体的答案。 我已经得到了堆中有多少可用的答案,我知道应该使用多少。我需要答案如何以编程方式确定我的应用程序使用堆的内存量是多少?我使用了多少内存?Android:我的应用使用多少内存?
回答
这工作:
Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
Debug.getMemoryInfo(memoryInfo);
String memMessage = String.format("App Memory: Pss=%.2f MB\nPrivate=%.2f MB\nShared=%.2f MB",
memoryInfo.getTotalPss()/1024.0,
memoryInfo.getTotalPrivateDirty()/1024.0,
memoryInfo.getTotalSharedDirty()/1024.0);
Toast.makeText(this,memMessage,Toast.LENGTH_LONG).show();
Log.i("log_tag", memMessage);
为什么除以1024? 根据Android文档,结果以kB(1000的倍数)表示,不以KB或KIB表示。 https://developer.android.com/reference/android/os/Debug.MemoryInfo.html https://en.wikipedia.org/wiki/Kilobyte – chris 2017-12-23 03:11:40
使用top -d 1 -n 1
的Android Shell命令来获取利用进程名称的所有进程列表或使用的内存的进程,然后提取您的进程信息从返回的字符串从系统:
BufferedReader in = null;
try {
Process process = null;
process = Runtime.getRuntime().exec("top -n 1 -d 1");
in = new BufferedReader(new
InputStreamReader(process.getInputStream()));
String line ="";
String content = "";
while((line = in.readLine()) != null) {
content += line + "\n";
}
System.out.println(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
if(in != null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
你会得到字符串为:
PID PPID USER STAT VSZ %MEM %CPU COMMAND
9673 9672 root R 712 0.1 0.0 top -d 1 -n 1
2489 2386 system S 369m 87.7 0.0 system_server
3101 2386 app_23 S 304m 72.3 0.0 com.android.browser
2581 2386 radio S 279m 66.3 0.0 com.android.phone
2585 2386 app_15 S 271m 64.4 0.0 com.android.launcher
我不明白你作为预期输出显示的%mem数字。 – user1445716 2012-07-09 08:07:58
@ user1445716:%MEM表示进程使用的内存,例如当前使用72.3内存和当前使用的com.android.launcher的“com.android.browser”目前使用64.4 – 2012-07-09 08:11:34
@ user1445716:但我不确定87.7,72.3值的%或任何其他格式,所以我认为你可以谷歌 – 2012-07-09 08:13:12
- 1. 我的Windows应用程序真正使用多少内存?
- 2. 我应该在我的Java程序中使用多少内存?
- 3. Hashtable使用多少内存?
- 4. as.data.table使用多少内存?
- 5. iPhone:多少内存使用量太多?
- 6. 我的内核模块使用多少内存?
- 7. 减少Android应用程序中的内存使用量
- 8. 多少内存的NSNotificationCenter使用
- 9. 如何减少我的Android应用程序使用的内存量
- 10. 我应该在Android应用中缓存多少JSON?
- 11. 我的iPhone应用程序使用了多少内存(来自模拟器)
- 12. 缓存系统应该在Windows上使用多少内存?
- 13. 而应用程序没有使用多少内存
- 14. 应用程序可以在iPad上使用多少内存?
- 15. iOS允许应用使用多少内存?
- 16. iPhone应用程序可以使用多少内存?
- 17. C++指针使用多少内存?
- 18. PHP实际使用多少内存?
- 19. SQL Server实际使用多少内存?
- 20. 哈希表使用多少内存?
- 21. numpy ndarray使用多少内存?
- 22. 如何告诉.NET应该使用多少内存?它应该为进程分配多少内存?
- 23. Android应用程序使用太多内存。我如何使它在更少的RAM上运行?
- 24. 我的Android应用程序占用太多内存?
- 25. 怎样才能找到我的android 2.3应用程序正在使用多少内存的堆?
- 26. Ruby on Rails应用程序应占用多少内存?
- 27. 我应该将多少内存放在我的虚拟机上?
- 28. 减少我的应用程序的内存占用量
- 29. 我可以了解一个Collection使用多少内存?
- 30. 我想确定动态链接库使用多少内存
看看http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android和http://kohlerm.blogspot.in/2009/04/analyzing -memory-usage-off-your-android.html – user370305 2012-07-09 06:03:32