为什么从getRuntime().totalMemory()
中提取的总内存与我们使用ActivityManager.MemoryInfo()
时的内存不相等?在下面的两个代码部分中,我得到了不同的值:
long totalMemory = Runtime.getRuntime().totalMemory() ;
和
ActivityManager actManager = (ActivityManager) getActivity().getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
actManager.getMemoryInfo(memInfo);
long totalMemory = memInfo.totalMem
在第一个代码中我得到12.759.040,从第二个代码中我得到907.034.624!
答案 0 :(得分:1)
那是两件事。
Runtime.getRuntime()。totalMemory()
返回Java虚拟机中的内存总量。该值可以随时间变化。这是运行时可用的内存。
memInfo.totalMem
返回可用内存总量
您可以咨询以下两个SO主题:
答案 1 :(得分:0)
Runtime.getRuntime().totalMemory()
是
返回Java虚拟机中的内存总量。此方法返回的值可能会随时间变化,具体取决于主机环境。
内核可访问的总内存。基本上,这是设备的RAM大小,不包括DMA缓冲区,基带CPU的RAM等内核下固定分配。
请注意,保存任何给定类型的对象所需的内存量可能取决于实现。
第一个是第二个的一部分。