Java Runime.getRuntime().totalMemory()和ActivityManager.MemoryInfo()文件
为什么从getRuntime.totalMemory提取的总内存不等于使用ActivityManager.MemoryInfo时的总内存?在下面的两个代码部分中,我得到了不同的值:Java Runime.getRuntime().totalMemory()和ActivityManager.MemoryInfo()文件,java,android,android-memory,Java,Android,Android Memory,为什么从getRuntime.totalMemory提取的总内存不等于使用ActivityManager.MemoryInfo时的总内存?在下面的两个代码部分中,我得到了不同的值: long totalMemory = Runtime.getRuntime().totalMemory() ; 及 第一个代码是12.759.040,第二个代码是907.034.624 这是两件不同的事情 Runtime.getRuntime.totalMemory 返回Java虚拟机中的内存总量。此值可以随时间变
long totalMemory = Runtime.getRuntime().totalMemory() ;
及
第一个代码是12.759.040,第二个代码是907.034.624 这是两件不同的事情 Runtime.getRuntime.totalMemory 返回Java虚拟机中的内存总量。此值可以随时间变化。这是运行时可用内存 memInfo.totalMem 返回可用内存的总量 您可以参考以下两个SO主题: 是 返回Java虚拟机中的内存总量。此方法返回的值可能随时间而变化,具体取决于主机环境 是 内核可访问的总内存。这基本上是设备的RAM大小,不包括内核以下的固定分配,如DMA缓冲区、基带CPU的RAM等 请注意,保存任何给定类型的对象所需的内存量可能取决于实现 第一个是运行进程的jvm所拥有的内存,大约为12MB。 第二个是总的内核可访问系统内存,在您的例子中大约是1GB。
第一个是第二个的一部分。感谢您提供两个主题。可以看到两个主题。两个有用的主题。
ActivityManager actManager = (ActivityManager) getActivity().getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
actManager.getMemoryInfo(memInfo);
long totalMemory = memInfo.totalMem