- 浏览: 346760 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
白色蜻蜓:
...
(转载)新浪微博错误提示代码 -
crzdot:
我也是用ultroiso做的mini启用盘,然后再把iso拷到 ...
centos6.4安装 -
k496229870:
...
libgdx学习之Camera -
DiaoCow:
蛮不错的。
redis命令思维导图 -
kingdelee:
HTTPClient完胜?
URLConnection与HttpClient的对比
转载:http://lavasoft.blog.51cto.com/62575/15565
一、概述
Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。Runtime采用了单例模式,因此不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。
一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
当Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常。
私有构造函数,私有private静态成员类实例;
二、API预览
addShutdownHook(Thread hook)
注册新的虚拟机来关闭挂钩。
availableProcessors()
向 Java 虚拟机返回可用处理器的数目。 native方法
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 虚拟机中的空闲内存量。 native方法
gc()
运行垃圾回收器。 native方法
InputStream getLocalizedInputStream(InputStream in)
已过时。 从 JDK 1.1 开始,将本地编码字节流转换为 Unicode 字符流的首选方法是使用 InputStreamReader 和 BufferedReader 类。
OutputStream getLocalizedOutputStream(OutputStream out)
已过时。 从 JDK 1.1 开始,将 Unicode 字符流转换为本地编码字节流的首选方法是使用 OutputStreamWriter、BufferedWriter 和 PrintWriter 类。
getRuntime()
返回与当前 Java 应用程序相关的运行时对象。
halt(int status)
强行终止目前正在运行的 Java 虚拟机。
load(String filename)
加载作为动态库的指定文件名。 线程安全
loadLibrary(String libname)
加载具有指定库名的动态库。 线程安全
maxMemory()
返回 Java 虚拟机试图使用的最大内存量。 native方法
removeShutdownHook(Thread hook)
取消注册某个先前已注册的虚拟机关闭挂钩。
runFinalization()
运行挂起 finalization 的所有对象的终止方法。 native方法
runFinalizersOnExit(value)
已过时。 此方法本身具有不安全性。它可能对正在使用的对象调用终结方法,而其他线程正在操作这些对象,从而导致不正确的行为或死锁。
totalMemory()
返回 Java 虚拟机中的内存总量。 native方法
traceInstructions(on)
启用/禁用指令跟踪。 native方法
traceMethodCalls(on)
启用/禁用方法调用跟踪。native方法
三、常见的应用
1、内存管理:
Java提供了无用单元自动收集机制。通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少。
Java会周期性的回收垃圾对象(未使用的对象),以便释放内存空间。但是如果想先于收集器的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。一个很好的试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。下面的程序演示了这个构想。
public class MemoryDemo { public static void main(String[] args) { Runtime r = Runtime.getRuntime(); long mem1, mem2; Integer someints[] = new Integer[1000]; System.out.println("Total memory is :" + r.totalMemory()); mem1 = r.freeMemory(); System.out.println("Initial free is :" + mem1/1024/1024+"M"); r.gc(); mem1 = r.freeMemory(); System.out.println("Free memory after garbage collection:" + mem1); for(int i=0;i<1000;i++) someints[i]=new Integer(i); mem2=r.freeMemory(); System.out.println("Free memory after allocation:"+mem2); System.out.println("Memory used by allocation:"+(mem1-mem2)); for(int i=0;i<1000;i++) someints[i]=null; r.gc(); mem2=r.freeMemory(); System.out.println("Free memory after collecting "+"discarded integers:"+mem2); } }
2、执行其他程序
在安全的环境中,可以在多任务操作系统中使用Java去执行其他特别大的进程(也就是程序)。exec()方法有几种形式命名想要运行的程序和它的输入参数。exec()方法返回一个Process对象,可以使用这个对象控制Java程序与新运行的进程进行交互。exec()方法本质是依赖于环境。
下面的例子是使用exec()方法启动windows的记事本notepad。这个例子必须在Windows操作系统上运行。
public class ExecDemo { public static void main(String[] args) { Runtime r = Runtime.getRuntime(); Process p = null; try { p = r.exec("notepad"); //p.waitFor(); } catch (Exception e) { System.out.println("Exception:" + e.getMessage()); } } }
exec()还有其他几种形式,例子中演示的是最常用的一种。exec()方法返回Process对象后,在新程序开始运行后就可以使用Process的方法了。可以用destory()方法杀死子进程,也可以使用waitFor()方法等待程序直到子程序结束,exitValue()方法返回子进程结束时返回的值。如果没有错误,将返回0,否则返回非0。上述代码中被注释的代码 p.waitFor()函数即是如上的作用;
Process和ProcessBuilder类研究
http://lavasoft.blog.51cto.com/62575/15599
http://lavasoft.blog.51cto.com/62575/15662
发表评论
-
volatile变量
2013-09-04 10:44 8671.volatile变量 当变量声明为volatile类 ... -
slf4j源码分析
2012-12-11 15:58 5845近期由于想利用应用程序的输出日志做一些应用,了解了下java ... -
HashSet、LinkedHashSet 实现原理
2012-12-07 16:00 1569之前没用过HashSet,听到别人提到HashSet,看了下源 ... -
HashMap、LinkedHashMap实现原理
2012-12-07 15:47 1106看源码可以知道HashMap内 ... -
logback udp appender
2012-11-29 11:44 2438package com.macken; impor ... -
log4j
2012-11-23 11:47 980log4j简要结构图 logback -
ThreadLocal这么回事
2012-11-21 18:04 1440今天线程池实现,看到一个使用ThreadLocal的地方,研 ... -
Java关键字synchronized
2012-08-15 17:57 01、synchronized关键字的作 ... -
HtmlCleaner CleanerProperties 参数配置
2012-07-06 15:34 3079Parameter Default ... -
dom4j读取http xml文件
2012-07-04 14:19 1521使用dom4j读取http xml文件,结合XPATH提取数据 ... -
(转)Filter(过滤器)简介和工作原理
2012-07-04 10:07 1387Filter(过滤器)简介 F ... -
HttpClient实现HTTP文件通用下载类
2012-07-03 15:16 52602import java.io.File; import ... -
Java 解析BT Torrent文件
2012-07-03 14:49 0参考资料: http://www.cesclub.co ... -
URLConnection与HttpClient的对比
2012-07-01 22:00 2728from:http://www.innovation.ch/j ... -
httpclient进化
2012-07-01 21:35 1376httpcomponents与commons-httpclie ... -
(转)HttpClient4.1入门教程
2012-07-01 21:05 0HttpClient简介 1) 百科名片: H ... -
Java操作excel
2012-06-28 13:57 922使用JexcelApi包 maven依赖 <de ... -
Java并发编程之ConcurrentHashMap
2012-06-18 15:10 905http://www.goldendoc.org/2011/0 ... -
正则提起图片地址
2012-06-16 14:07 1047<p><img alt=" ... -
Web-harvest 2.0 Maven 配置
2012-05-08 14:26 1425<project xmlns="htt ...
相关推荐
"深入研究java.lang.Runtime类" java.lang.Runtime 类是 Java 语言中一个非常重要的类,它提供了访问当前 Java 应用程序的 Runtime 环境的能力。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其...
首先,Java中的异常分为检查型异常(Checked Exceptions)和运行时异常(Runtime Exceptions)。检查型异常是那些在编译阶段就需要被处理的异常,如IOException、SQLException等。它们通常与方法的契约相关,调用者...
JRE (Java Runtime Environment),即Java运行环境,通常已包含在 J2SDK中了。如果我们仅仅是为了运行Java程序,而不是从事Java开发 ,我们可以直接下载JRE ,在我们的系统上安装。 5 Java 的开发工具包(JDK ) z ...
【Java类加载原理解析】 Java 类加载机制是Java技术体系中的重要组成部分,它负责将类的字节码文件从磁盘、网络或其他数据源加载到...通过深入研究类加载机制,我们能够提升对Java虚拟机和Java程序运行时行为的理解。
Java程序代码首先会被编译成字节码(bytecode),这种字节码不是针对任何特定的机器运行,而是可以在任何装有Java运行时环境(Java Runtime Environment,JRE)的系统上执行。这种特性大大简化了跨平台开发的复杂性...
Java.lang.Process 类深入研究 Java.lang.Process 类是 Java 类库中的一个核心部分,它提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。下面将对 Process 类...
- **Oleg Pliss, Ph.D.**:Sun Microsystems客户端系统组高级员工工程师,主要研究方向为高性能Java ME虚拟机,特别专长于编译器和垃圾回收技术。 #### 二、本次讲座目标 本次讲座旨在让参与者了解高性能Java ...
Java 异常可以分为两类:Checked Exception 和 Runtime Exception。Checked Exception 是编译器检查的异常,需要在编译期处理。Runtime Exception 是运行时异常,可以在运行时处理。Java 异常处理机制包括抛出异常、...
2. **JRE (Java Runtime Environment)**:是Java应用程序运行的必要环境,包括Java虚拟机(JVM)和Java类库。Panoply基于Java编写,因此需要JRE才能运行。JRE 11及以上版本是Panoply 5.3的最低需求,确保了软件的兼容...
Java常用类库章节涵盖了StringBuffer、Runtime、System、Math、Random、NumberFormat、BigDecimal等类的使用,以及日期操作类、正则表达式、定时调度等。这些类库为Java编程提供了丰富的工具和方法,可以提高开发...
Java RT包,全称为Runtime Library Package,是Java标准版(Java SE)的核心库,包含了运行Java应用程序所必需的基础类库。这些类库构成了Java平台的基础,提供了系统操作、内存管理、网络通信、I/O流、多线程、集合...
031102_【第11章:Java常用类库】_Runtime类笔记.pdf 031103_【第11章:Java常用类库】_国际化程序笔记.pdf 031104_【第11章:Java常用类库】_System类笔记.pdf 031105_【第11章:Java常用类库】_日期操作类(Date、...
在Java中,包是一种组织类的方式,"com"通常表示商业(commercial)组织的顶级包,而App Inventor的源码可能被组织在一系列子包下,如`com.appinventor.components`或`com.appinventor.components.runtime`等,这些...
而“直接运行”表明程序是可执行的,用户下载后无需编译即可启动,这通常得益于Java的“写一次,到处运行”的理念,通过JRE(Java Runtime Environment)就能在各种操作系统上运行。 “画面漂亮”可能暗示这个程序...
`com.tool.javavm.rt`可能是运行时库(Runtime Library)的实现,Java运行时环境中的核心类库,包括基础数据类型、集合、I/O、网络、多线程等Java API的实现。在标准Java虚拟机中,这部分通常包含在rt.jar中,但对于...
3. **Java Runtime Environment (JRE)**:运行Java应用程序所需的基本环境,不包含开发工具。 Java EE则扩展了Java SE,增加了企业级开发所需的组件和服务,如: 1. **Servlets**:用于处理HTTP请求,创建动态Web...
在深入研究这个类之前,我们首先了解其主要功能和特性。 1. **命令与参数**: `ProcessBuilder`类的核心是命令列表,这是一个字符串数组,用于指定要执行的外部程序及其参数。例如,如果你想要运行`ls`命令并传入...
Java Runtime Environment(JRE)包含了JVM和标准类库,确保了程序的可移植性。虽然早期的JAVA程序因为解释器的存在在性能上稍逊色于C++等编译型语言,但随着Just-In-Time(JIT)编译器的发展,JAVA程序的运行效率...