虽然有类似的问题(例如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变量消耗的大小),但不是这两个都给我相同的总使用内存。
答案 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()