我发现可以使用this answer中的java轻松完成,但如果我的应用程序是使用C#.NET和xamarin库编写的,那么无法找到它。如何使用此框架获取相同的数据(当前堆大小,最大堆大小)?
提前致谢。
答案 0 :(得分:1)
我想你正在寻找这样的东西:
long memory = GC.GetTotalMemory(true);
它检索当前认为要分配的字节数。
还有另一种选择:
Process currentProc = Process.GetCurrentProcess();
long memoryUsed = currentProc.PrivateMemorySize64;
您可以通过阅读PrivateMemorySize64
属性来确定内存使用情况。您需要using System.Diagnostics;
引用来支持此操作。
答案 1 :(得分:1)
你可以这样做:
//get max heap available to app
var activityManager = (ActivityManager)activity.GetSystemService(Context.ActivityService);
int maxHeap = activityManager.MemoryClass*1024; //KB
//get current heap used by app
Runtime runtime = Runtime.GetRuntime();
int usedHeap = (int)((runtime.TotalMemory() - runtime.FreeMemory()) / 1024.0f); //KB
//get amount of free heap remaining for app
int availableHeap = maxHeap - usedHeap;