当前位置: 首页 > 面试题库 >

Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?

章乐逸
2023-03-14
问题内容

我一直想知道Runtime.getRuntime()totalMemory()Runtime.getRuntime()freeMemory()Runtime.getRuntime()maxMemory()的确切含义是什么 。

我的理解是,Runtime.getRuntime().totalMemory()返回我的进程正在使用的总内存。那是对的吗?

如何freeMemory()maxMemory()


问题答案:

根据API

totalMemory()

返回Java虚拟机中的内存总量。此方法返回的值可能会随时间变化,具体取决于主机环境。注意,保存任何给定类型的对象所需的内存量可能取决于实现。

maxMemory()

返回Java虚拟机将尝试使用的最大内存量。如果没有固有限制,则将返回Long.MAX_VALUE值。

freeMemory()

返回Java虚拟机中的可用内存量。调用gc方法可能会导致freeMemory返回的值增加。

关于你的问题,maxMemory()返回-Xmx值。

你可能会奇怪为什么有totalMemory()A maxMemory() 。答案是JVM延迟分配内存。可以这样说启动Java进程

java -Xms64m -Xmx1024m Foo

你的进程以64mb的内存开始,如果需要更多内存(最大1024m),它将分配内存。 totalMemory()对应于JVM for Foo 当前可用的内存量。如果JVM需要更多的内存,它会懒洋洋地分配它达到最大内存。如果你运行-Xms1024m -Xmx1024m,你获得的价值totalMemory()maxMemory()将等于。

另外,如果要准确计算已使用的内存量,请执行以下计算:

final long usedMem = totalMemory() - freeMemory();


 类似资料:
  • 问题内容: 我正在尝试通过使用删除垃圾文件 只要我不使用通配符,它​​就可以正常工作,即,这有效: 而以下内容返回“没有此类文件或目录”: 我应该能够做到这里概述的所有美好的事情,对吗? 问题答案: 我可能建议您让Java为您执行此操作? 使用file.listFiles()获取文件列表 如果需要,使用file.getName()。contains(string)对其进行过滤 遍历执行file.d

  • 主要内容:什么是Java语言,Java语言的特点Java 是近 10 年来计算机软件发展过程中的传奇,其在众多开发者心中的地位可谓“爱不释手”,与其他一些计算机语言随着时间的流逝影响也逐渐减弱不同,Java 随着时间的推移反而变得更加强大。 从首次发布开始,Java 就跃到了 Internet 编程的前沿。后续的每一个版本都进一步巩固了这一地位。如今,Java 依然是开发基于 Web 的应用程序的最佳选择。此外,Java 还是智能手机变革的推手

  • (1)队列先进先出,栈先进后出。 (2)遍历数据速度不同。 栈只能从头部取数据 也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性; 队列则不同,他基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。

  • 对于基本类型,==比较的是值; 对于引用类型,==比较的是地址; equals不能用于基本类型的比较; 如果没有重写equals,equals就相当于==; 如果重写了equals方法,equals比较的是对象的内容;

  • 问题内容: 简单地说,什么是Java ClassLoader?何时使用Java?为什么? 好的,我读了一篇维基文章。ClassLoader加载类。好。因此,如果我包含jar文件并导入,则ClassLoader可以完成这项工作。 我为什么要打扰这个ClassLoader?我从未使用过它,也不知道它的存在。 问题是,为什么ClassLoader类存在?而且,您如何在实践中使用它?(案例存在,我知道。)

  • 问题内容: 我认为,“ Bean”是具有属性和getter / setter的Java类。据我了解,它等效于C结构。真的吗? 另外,bean和常规类之间是否存在真正的语法差异?有没有特殊定义或接口? 基本上,为什么有一个术语呢? 还什么的接口是什么意思? 问题答案: JavaBean只是一个标准 所有私有属性(使用getters / setters) 一个公开的无参数构造函数 实施Serializ