如何获取android上当前正在运行的进程的空闲内存量?或者如何以编程方式获取分配给当前进程的内存总量?
方法ActivityManager.getMemoryInfo()
在我的情况下不起作用,因为它返回空闲的系统内存,而不是进程内存。还有ActivityManager.getProcessInfo()
一种方法,但它返回一个旧的 API 结构,我不知道是否可以使用该数据检索空闲内存量。
关于这些方法的任何解释,或者可能是其他一些获取可用内存量的方法?
如何获取android上当前正在运行的进程的空闲内存量?或者如何以编程方式获取分配给当前进程的内存总量?
方法ActivityManager.getMemoryInfo()
在我的情况下不起作用,因为它返回空闲的系统内存,而不是进程内存。还有ActivityManager.getProcessInfo()
一种方法,但它返回一个旧的 API 结构,我不知道是否可以使用该数据检索空闲内存量。
关于这些方法的任何解释,或者可能是其他一些获取可用内存量的方法?
您还可以使用Runtime.getRuntime().maxMemory();
which 返回进程的最大堆大小(以字节为单位)。
尽管这通常与内存类相同,但我发现内存类返回较高值(即 24MB)而堆大小返回较低值(即 16MB)的情况,而进程真正可用的值是较低的.
试试下面的代码:
ActivityManager activityManager = = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
activityManager.getMemoryInfo(mi);
Log.i("memory free", "" + mi.availMem);
对我来说不是很满意,但我发现ActivityManager.getMemoryClass()
返回分配给应用程序的内存量以兆字节为单位。
尝试以下命令:
启动应用程序并输入以下命令
C:\Program Files\Android\android-sdk\platform-tools\adb shell dumpsys meminfo "your package name"
该类Debug
提供了许多有关进程内存使用的有用信息。您可以获得有关 Dalvik 堆和本机堆的信息。请参阅http://developer.android.com/reference/android/os/Debug.html