Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程。每次使用“java”命令启动Java虚拟机时都会对应一个Runtime实例,并且只有一个实例,应用程序会通过该实例与其运行时的环境相连。应用程序不能创建自己的Runtime实例,若想在程序中获得一个Runtime实例,可以通过getRuntime()方法获取与之相关的Runtime对象,具体方式如下:

  Runtime run = Runtime.getRuntime();

  由于Runtime类封装了Java虚拟机进程,因此,可以通过该类的实例对象来获取当前虚拟机的相关信息。接下来通过一个案例来演示Runtime类的使用,如文件1所示。

  public class Example12 { public static void main(String[] args) { Runtime rt = Runtime.getRuntime(); // 获取Java程序关联的运行时对象 System.out.println("处理器的个数: " + rt.availableProcessors() + "个"); System.out.println("空闲内存大小: " + rt.freeMemory() / 1024 / 1024 + "M"); System.out.println("最大可用内存大小: " + rt.maxMemory() / 1024 / 1024 + "M"); } }

  运行结果如图1所示:

  文件1中,通过“Runtime.getRuntime();”方法创建了一个Runtime的实例对象,并分别调用该对象的availableProcessors()方法、freeMemory()方法和maxMemory()方法,将当前虚拟机的处理器个数、空闲内存大小和可用最大内存大小的信息打印出来。

  需要注意的是,由于每台计算机的配置和性能不同,该文件的打印结果也会有所不同。另外,空闲内存大小和可用最大内存大小都是以字节为单位计算的,文件1中程序的运行结果已经换算成了以兆(M)为单位的值。

  Runtime类中提供了一个exec()方法,该方法用于执行一个DOS命令,从而实现和在命令行窗口中输入DOS命令同样的效果。例如,可以通过运行“notepad.exe”命令打开一个Windows自带的记事本,程序代码如文件2所示。

  import java.io.IOException; public class Example13 { public static void main(String[] args) throws IOException { Runtime rt = Runtime.getRuntime(); // 创建Runtime实例对象 rt.exec("notepad.exe"); // 调用exec()方法 } }

  文件2中,调用了Runtime对象的exec()方法,并将系统命令“notepad.exe”作为参数传递给方法。运行程序后会在桌面上打开一个记事本,如图2所示:

  此时,会在Windows系统中产生一个新的进程notepad.exe,可以通过任务管理器进行观察,如图3所示。

  Runtime类的exec()方法会返回一个Process对象,该对象表示操作系统的一个进程,此处为notepad.exe进程,通过Process对象可以对产生的新进程进行管理,如关闭此进程只需调用destroy()方法即可。

  接下来通过一个案例来实现打开的记事本并在3秒后自动关闭的功能,如文件3所示。

  public class Example14 { public static void main(String[] args) throws Exception { // 创建一个Runtime实例对象 Runtime rt = Runtime.getRuntime(); // 得到表示进程的Process对象 Process process = rt.exec("notepad.exe"); // 程序休眠3秒 Thread.sleep(3000); // 关闭进程 process.destroy(); } }

  在文件3中,通过调用Process对象的destroy()方法,将打开的记事本关闭了。为了突出演示的效果,使用了Thread类的静态方法sleep(long millis)使程序休眠了3秒,因此,程序运行后,会看到打开的记事本在3秒后自动关闭。

Java虚拟机中获得Runtime实例的方法是什么?相关推荐

  1. 虚方法调用在Java虚拟机中的实现方式?

    写在前面 本文隶属于专栏<100个问题搞定Java虚拟机>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定Java ...

  2. Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法

    什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置 ...

  3. Java虚拟机中的栈和堆

    Java虚拟机中的栈和堆 简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存. 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,J ...

  4. 深入理解Java虚拟机--中

    深入理解Java虚拟机--中 第6章 类文件结构 6.2 无关性的基石 无关性的基石:有许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(ByteCode),从而 ...

  5. Java虚拟机(四)—— Java虚拟机中的对象

    1. Java 对象在虚拟机中的生命周期 在 Java 对象被类加载器加载到虚拟机中后,Java 对象在 Java 虚拟机中有 7 个阶段. 1.1 创建阶段(Created) 创建阶段的具体步骤为: ...

  6. Java虚拟机中的内存模型?JSP常用的动作标签及作用? 如何防止表单重复提交问题? JSP四大作用域及请求范围? 分别说出http,https,ftp,talnet的默认端口?

    文章目录 一 ,Java虚拟机中的内存模型JVM? 1,Java堆 2,方法区 3,Java栈 4,本地方法栈 问题扩展: 二 , JSP常用的动作标签及作用 (1)问题分析: (2)核心答案讲解: ...

  7. Quartz-2.2.1 任务调度框架在Java项目中的使用实例

    < Quartz-2.2.1 任务调度框架在Java项目中的使用实例 > 本实例是基于Quartz 2.2.1 版本为中心,也是目前最新的Quartz任务调度框架. 目前在 J2EE 项目 ...

  8. java 控制jsp_JSP学习之Java Web中的安全控制实例详解

    普通用户界面 修改登录的Servlet,修改后的代码如下: LoginProcess.java代码: package servlet; import javabean.User; import jav ...

  9. 虚拟主机可以运行java_下面哪种类型的文件可以在Java虚拟机中运行( ).

    下面哪种类型的文件可以在Java虚拟机中运行( ). 答:.class 舌尖前送气清塞擦音是 答:c 中国大学MOOC: 已知 [X]原=10101100,[Y]补=11000110, 求 [X+Y] ...

最新文章

  1. 201621123068 作业08-集合
  2. 第 13 章 编码风格
  3. sql item_map
  4. PA银行面试之炮灰之程
  5. dom4j工具类_基于DOM4J的XML文件解析类
  6. c通过位运算求绝对值_初中数学归类总结(四)有理数的乘除乘方及混合运算...
  7. 遇劣势变蠢、发语音嘲讽人类……OpenAI这些奇葩DOTA操作跟谁学的?
  8. [转] 各种数据类型转换
  9. Newtonsoft.Json报错:未能加载文件或程序集...或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配...
  10. Ubuntu server配置远程VNC服务
  11. java html5 上传_Java实现HTML5拖拽文件上传
  12. 高级软考之——系统分析师思维导图(二)
  13. 如何更改微信标签名字_微信如何设置备注及标签 来学习吧
  14. python 进化树_SCHISM 构建克隆进化树
  15. Go 环境变量、go env
  16. 矩阵最简行阶梯型计算器_一个例子看懂二次型的三种线性替换的区别
  17. 7.sqli-labs-Less7
  18. Altium Designer中如何实现元件Designator自动编号
  19. iOS 12 - iOS 15,如何在iPhone上设置“早上好”功能
  20. unity-shader-基于图像的光照IBL

热门文章

  1. 234. Palindrome Linked List - Easy
  2. Volume是如何工作的
  3. python之XML文件解析
  4. Extjs 基础篇—— Function基础
  5. Intellij IDEA使用教程(超详细)
  6. UVA 116 Unidirectional TSP DP
  7. BestCoder 1st Anniversary ($) 1002.Hidden String
  8. 《UG NX8.0中文版完全自学手册》一第1章 UG NX 8.0简介
  9. 用python操作mysql数据库(之“更新”操作)
  10. buildroot httpd php