首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Runime.getRuntime().totalMemory()和ActivityManager.MemoryInfo()

Runime.getRuntime().totalMemory()和ActivityManager.MemoryInfo()
EN

Stack Overflow用户
提问于 2018-12-15 10:34:53
回答 2查看 587关注 0票数 0

为什么从getRuntime().totalMemory()中提取的总内存与使用ActivityManager.MemoryInfo()时不相等?在下面两个代码部分中,我得到了不同的值:

代码语言:javascript
复制
long totalMemory = Runtime.getRuntime().totalMemory() ;

代码语言:javascript
复制
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!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-15 10:47:08

Runtime.getRuntime().totalMemory()

返回Java虚拟机中的总内存量。此方法返回的值可能随时间而变化,这取决于主机环境。

memInfo.totalMem

内核可访问的总内存。这基本上就是设备的RAM大小,不包括内核以下的固定分配,比如DMA缓冲区、基带CPU的RAM等等。 请注意,容纳任何给定类型的对象所需的内存量可能与实现有关。

  • 第一个是运行进程的jvm所拥有的内存,大约为12 MB。
  • 第二个是整个内核可访问的系统内存,在您的情况下大约是1G。

第一个是第二个的一部分。

票数 0
EN

Stack Overflow用户

发布于 2018-12-15 10:46:55

这是两件不同的事情。

Runtime.getRuntime().totalMemory()

返回Java虚拟机中的总内存量。这个值会随着时间的推移而改变。这是运行时空闲内存。

memInfo.totalMem

返回可用内存总量。

您可以参考这两个主题:

Topic 1

Topic 2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53791529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档