runtime运行时候,是封装了一个JVM进程的类,每一个JAVA程序实际上启动了一个JVM进程,那么每个JVM对应一个runtime实例。此实例是由JVM为其实例化。

  本类的定义中没有构造方法,因为本类的方法被私有化了。则此类中肯定有一个方法返回实例化对象(类似单例设计者模式)

  实例化方法:

Runtime run = Runtime.getRuntime();    // 通过Runtime类的静态方法进行实例化操作

  一旦取得实例,以上方法就可以进行操作了。

一,得到JVM信息

  每一个runtime()都是JVM进行实例化,所以可以直接通过此类取得一些信息。

public class RuntimeDemo01{
public static void main(String args[]){
Runtime run = Runtime.getRuntime(); // 通过Runtime类的静态方法进行实例化操作
System.out.println("JVM最大内存量:" + run.maxMemory()) ; // 观察最大的内存,根据机器的不同,环境也会有所不同
System.out.println("JVM空闲内存量:" + run.freeMemory()) ; // 取得程序运行的空闲内存
String str = "Hello " + "World" + "!!!"
+"\t" + "Welcome " + "To " + "MLDN" + "~" ;
System.out.println(str) ;
for(int x=0;x<1000;x++){
str += x ; // 循环修改内容,会产生多个垃圾
}
System.out.println("操作String之后的,JVM空闲内存量:" + run.freeMemory()) ;
run.gc() ; // 进行垃圾收集,释放空间
System.out.println("垃圾回收之后的,JVM空闲内存量:" + run.freeMemory()) ;
}
};

  运行结果:

JVM最大内存量:1394606080
JVM空闲内存量:93386136
Hello World!!! Welcome To MLDN~
操作String之后的,JVM空闲内存量:87346392
垃圾回收之后的,JVM空闲内存量:93846784

RUNTIME与PROCESS类结合使用

  除了观察内存使用量外,也可以直接使用Runtime类运行本机可执行程序,例如,记事本

  。public Process exec(String Command)throws IOException;

  可见,本方法需要异常处理

package Thread1;
public class demo1{
public static void main(String args[]){
Runtime run = Runtime.getRuntime() ; // 取得Runtime类的实例化对象
try{
run.exec("eclipse.exe") ; // 调用本机程序,此方法需要异常处理
}catch(Exception e){
e.printStackTrace() ; // 打印异常信息
// System.out.println(e) ;
}
}
};

  运行结果:

  eclipse程序被调用。

  以上程序只是打开了记事本,现在要求记事本在打开5秒之后自动关闭,如果要想操作实现以上功能,就需要操作进程了。因为每一个记事本打开,都是会存在一个进程。

  exec()方法的返回值是Process,表示一个进程的操作类。可以通过destroy()方法销毁一个进程。并且通过sleep()方法让线程暂停5秒钟。

package Thread1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; public class demo1{
public static void main(String args[]){
Runtime t=Runtime.getRuntime();
Process p=null; // 定义进程变量,注意,这里是声明一个对象,并没有实例化,在下文赋值实例化。
try{
p=t.exec("eclipse.exe"); //exec()方法返回值是Process对象。 调用本机程序,此方法需要异常处理
}catch(IOException e)
{
e.printStackTrace(); // 打印异常信息
}
try{
Thread.sleep(5000); // 让此线程存活5秒
}catch(Exception e)
{
} p.destroy(); // 结束此进程
}
};

  运行结果:

  会发现,eclipse程序在打开5秒后自动关闭。

总结

  Runtime类本身就是一种单例设计的一种应用。因为整个JVM只存在一个Runtime()对象,可以使用Runtime()类取得JVM的系统信息。或者使用gc()释放系统垃圾内存。

还可以使用此类运行本机程序。

  

Java常用类库——Runtime的更多相关文章

  1. JAVA(三)JAVA常用类库/JAVA IO

    成鹏致远 | lcw.cnblog.com |2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不 ...

  2. Google的Java常用类库 Guava资料

    java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子 ...

  3. Java 常用类库与技巧【笔记】

    Java 常用类库与技巧[笔记] Java异常体系 Java异常相关知识 Java在其创立的时候就设置了比较有效的处理机制,其异常处理机制主要回答了三个问题:what,where,why what表示 ...

  4. JAVA常用类库简介(转)

    Java编程语言中为方便学习者学习,编制了许多类,这些类已经经过测试,都是我们编程的基础.如果不利用这些已存在的类,我们的编程工作将变得异常复杂并且效率低下.所以我们应尽可能多的掌握Java基本类库的 ...

  5. Java常用类库API之MD5简单使用

    常用类库--MD5简单使用 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash v ...

  6. Java常用类库2

    1.java.util.Date类 package LESSON9; import java.util.Date; public class demo1 { public static void ma ...

  7. 菜鸡的Java笔记 - java 常用类库

    CommonClassLibrary 常用类库        定时调度            定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式                    con ...

  8. 谈谈Java常用类库中的设计模式 - Part Ⅰ

    背景 最近一口气看完了Joshua Bloch大神的Effective Java(下文简称EJ).书中以tips的形式罗列了Java开发中的最佳实践,每个tip都将其意图和要点压缩在了标题里,这种做法 ...

  9. java 常用类库:操作系统System类,运行时环境Runtime

    System类: System 类代表Java程序的运行平台,程序不能创建System类的对象, System类提供了一些类变量和类方法,允许直接通过 System 类来调用这些类变量和类方法. Sy ...

随机推荐

  1. 拖拽改变div的大小

    拖拽改变div的大小 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...

  2. RHEL7进程管理

    进程概念 名称 说明 程序 一组指令的集合 进程 程序的执行就是进程也可以把进程看成一个独立的程序在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代码只属于自己进程是资源分配的基本单位,也 ...

  3. 2015年第11本:代码整洁之道Clean Code

    前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...

  4. 博客建议(Suggestions)

    I don't know if you will like the music. But I am sure there are some songs which are really wonderf ...

  5. windows 2008 r2 下面搭建 iis+sql server +php5.6 环境遇见的一些问题记录一下

    由于web服务器以前在iis下部署有几个网站,现在这个项目开发又是用的php,本来php+mysql+iis应该很简单随便在网上能搜索出来很多,但是,由于以前那个web网站是用的sqlserver数据 ...

  6. 敏捷软件开发:原则、模式与实践——第8章 SRP:单一职责原则

    第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因. 8.1 定义职责 在SRP中我们把职责定义为变化的原因.如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责.同时,我 ...

  7. 解决log4j:WARN Error initializing output writer. log4j:WARN Unsupported encoding?的问题

    异常名:log4j:WARN Error initializing output writer. log4j:WARN Unsupported encoding? 异常截图: 在一般的javaweb项 ...

  8. 我眼中的自己ps:自我介绍

    我是一个理科生,学的是计算机科学与技术专业,目前在桂林理工大学信息科学与工程学院就读.我心里不是很喜欢这个专业,但是因为当初的某种原因就入了这个门.自从学习了计算机以后,我发现这个专业可谓“博大精深, ...

  9. Effective Java 04 Enforce noninstantiability with a private constructor

    A class can be made noninstantiable by including a private constructor. // Noninstantiable utility c ...

  10. 3.输入三个整数,xyz,最终以从小到大的方式输出。利用嵌套。

    <body>请输入a的值:<input type="numbe" id="a" value=""/>请输入b的值:& ...