在Android中,如何以编程方式为我的应用程序查找总的已用内存(本机和非本机)?

时间:2016-01-16 23:57:49

标签: java android dalvik

虽然有类似的问题(例如A),但他们的答案并没有解决我的问题。

我使用Android Studio 1.5.1定位Android API 18(在Android KitKat 4.4之前,所以我正在处理Dalvik,而不是ART运行时)。

我的问题是:

在Android中,如何在不使用我的应用程序以编程方式字节中查找总使用内存(本机和非本机)任何本机代码?

更新:

为什么其他类似的解决方案无法解决我的问题?

以下是更详细的问题:

我有两个方法,before()和after()。 Bothe方法具有相同的代码来计算总的已用内存,但方法after()具有整数局部变量

int consume = 123;

问题是after()方法应该显示总使用内存+4(这是int变量消耗的大小),但不是这两个都给我相同的总使用内存。

1 个答案:

答案 0 :(得分:0)

不确定为什么其他答案没有解决您的问题,但这就是我在同一API级别所做的事情。

public static void getMemoryStat(){

    double max = Runtime.getRuntime().maxMemory(); 
    double heapSize = Runtime.getRuntime().totalMemory(); 
    double heapRemaining = Runtime.getRuntime().freeMemory(); 
    double nativeUsage = Debug.getNativeHeapAllocatedSize(); 

    double totalMemoryUsed = (Runtime.getRuntime().totalMemory() + android.os.Debug.getNativeHeapAllocatedSize());
    int percentUsed = (int)(totalMemoryUsed / Runtime.getRuntime().maxMemory() * 100);
    double remaining = max - (heapSize - heapRemaining + nativeUsage); 
    ErrorLog.log("max:"+ max);
    ErrorLog.log("heapSize:"+ heapSize);
    ErrorLog.log("heapRemaining:"+ heapRemaining);
    ErrorLog.log("nativeUsage:"+ nativeUsage);
    ErrorLog.log("remaining:"+ remaining);
    ErrorLog.log("percentUsed:"+ percentUsed);

}

ErrorLog是我的自定义类。您应该将其更改为Log.d()