文档章节

十八,Runtime类

ARESXIONG
 ARESXIONG
发布于 2015/04/28 01:38
字数 1018
阅读 141
收藏 1

1. 概述

每一个jvm启动的时候实际上对应了一个runtime实例,表示运行时.Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.

Runtime类有自身的构造方法,一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用. 一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为.

Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常.

2.API预览

addShutdownHook(Thread hook) //注册新的虚拟机来关闭挂钩.

availableProcessors() //Java 虚拟机返回可用处理器的数目.

exec(String command) //在单独的进程中执行指定的字符串命令.

exec(String[] cmdarray) //在单独的进程中执行指定命令和变量.

exec(String[] cmdarray, String[] envp) //在指定环境的独立进程中执行指定命令和变量.

exec(String[] cmdarray, String[] envp, File dir) //在指定环境和工作目录的独立进程中执行指定的命令和变量.

exec(String command, String[] envp) // 在指定环境的单独进程中执行指定的字符串命令.

exec(String command, String[] envp, File dir) //在有指定环境和工作目录的独立进程中执行指定的字符串命令.

exit(int status) //通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机.

freeMemory() //返回 Java 虚拟机中的空闲内存量.

gc() //运行垃圾回收器.

getRuntime() //返回与当前 Java 应用程序相关的运行时对象.

halt(int status) //强行终止目前正在运行的 Java 虚拟机.

load(String filename) //加载作为动态库的指定文件名.

loadLibrary(String libname) //加载具有指定库名的动态库.

maxMemory() //返回 Java 虚拟机试图使用的最大内存量.

totalMemory() //返回 Java 虚拟机中的内存总量.

traceInstructions(on) //启用/禁用指令跟踪.

traceMethodCalls(on) //启用/禁用方法调用跟踪.

removeShutdownHook(Thread hook) //取消注册某个先前已注册的虚拟机关闭挂钩.

runFinalization() //运行挂起 finalization 的所有对象的终止方法.

InputStream getLocalizedInputStream(InputStream in)

//已过时. JDK 1.1 开始,将本地编码字节流转换为 Unicode 字符流的首选方法是使用 InputStreamReader BufferedReader .

OutputStream getLocalizedOutputStream(OutputStream out)

//已过时. JDK 1.1 开始,Unicode 字符流转换为本地编码字节流的首选方法是使用 OutputStreamWriterBufferedWriter PrintWriter .

runFinalizersOnExit(value)

//已过时. 此方法本身具有不安全性.它可能对正在使用的对象调用终结方法,而其他线程正在操作这些对象,从而导致不正确的行为或死锁.


3.Runtime应用

3.1Runtime 与进程

Runtime类可以通过exec()方法直接运行本机程序.

示例:

package com.ares.runtimedemo;

public class RuntimeDemo {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime(); // 单例设计
		run.exec("freecell.exe");// 执行程序
	}

}

Runtime类可以通过destroy()方法销毁本机运行程序.

示例:

package org.lxh.runtimedemo;
public class RuntimeDemo02 {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime(); // 单例设计
		Process pro = run.exec("freecell.exe");// 执行程序
		Thread.sleep(2000);
		pro.destroy(); // 销毁
	}

}



3.2Runtime取得系统资源

通过maxMemory(),totalMemory(),freeMemory()方法获取系统资源

还有通过gc()方法可以回收内存垃圾.

示例:

package org.ares.runtimedemo;

public class RuntimeDemo {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime(); // 单例设计
		System.out.println("** 最大的可用内存:" + run.maxMemory());
		System.out.println("** 总共内存空间:" + run.totalMemory());
		System.out.println("计算前的空闲的内存空间:" + run.freeMemory());
		String str = "";
		for (int i = 0; i < 10000; i++) {
			str += i; // 会产生大量的垃圾
		}
		System.out.println("计算后的空闲的内存空间:" + run.freeMemory());
		run.gc(); // 进行垃圾收集
		System.out.println("垃圾收集之后的空闲的内存空间:" + run.freeMemory());
	}
}


参考:
http://www.cnblogs.com/lixiaolun/p/4320754.html


20150428


JAVA学习笔记系列

--------------------------------------------

                    联系方式

--------------------------------------------

        Weibo: ARESXIONG

        E-Mail: aresxdy@gmail.com

------------------------------------------------

© 著作权归作者所有

上一篇: 十九,System类
ARESXIONG
粉丝 8
博文 104
码字总数 225460
作品 0
西城
私信 提问
JAVA 练习题 2019-7-31AM

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/ai64/article/details/98097756 JAVA 练习题 2019-7-31AM 第二题:J...

ai_64
08/02
0
0
戏说模式之:策略模式

定义 策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 理解 上面的定义是百度抄的,反复读了好几遍也没...

coder_
2017/10/26
0
0
2019 iOS面试题总结(题目及答案已上传Githup)

Objective_C语言特性 一、分类 二、扩展 三、代理(Delegate) 四、通知(NSNotification) 五、KVO (Key-value observing) 六、KVC(Key-value coding) 七、属性关键字 runloop 一、RunLoop...

iOS开发_小迷糊
06/24
0
0
职场良书书评活动结束,获奖名单公布

由 成都道然科技有限责任公司,OSCHINA 联合举办的书评活动(详情)已经结束。 我们从中筛选出质量较好的回帖并抽出其中的12名幸运会员,名单如下: @yaotian 《思维导图的三招十八式》 @疯狂...

红薯
2011/12/07
1K
20
《鸡啄米VS2010/MFC编程入门》系列技术文章整理收藏

《鸡啄米VS2010/MFC编程入门》系列技术文章整理收藏 1VS2010/MFC编程入门之前言 http://www.lai18.com/content/410337.html 2VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架) ...

开元中国2015
2015/06/27
267
0

没有更多内容

加载失败,请刷新页面

加载更多

全面兼容IE6/IE7/IE8/FF的CSS HACK写法

浏览器市场的混乱,给设计师造成很大的麻烦,设计的页面兼容完这个浏览器还得兼容那个浏览器,本来ie6跟ff之间的兼容是很容易解决的。加上个ie7会麻烦点,ie8的出现就更头疼了,原来hack ie...

前端老手
11分钟前
3
0
常用快递电子面单批量打印api接口对接demo-JAVA示例

目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打...

程序的小猿
14分钟前
5
0
Yii 框架中rule规则必须搭配验证函数才能使用

public $store_id;public $user_id;public $page;public $limit;public $list;public $mch_list;public $cart_id;public $is_community;public $shop_id;public $cart_typ......

chenhongjiang
17分钟前
2
0
Flutter使用Rammus实现阿里云推送

前言: 最近新的Flutter项目有“阿里云推送通知”的需求,就是Flutter的App启动后检测到有新的通知,点击通知栏然后跳转到指定的页面。在这里我使用的是第三方插件Rammus来实现通知的推送,之...

EmilyWu
17分钟前
40
0
Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务

短网址顾名思义就是使用比较短的网址代替很长的网址。维基百科上面的解释是这样的: 短网址又称网址缩短、缩短网址、URL 缩短等,指的是一种互联网上的技术与服务,此服务可以提供一个非常短...

阿里巴巴云原生
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部