Runtime类

认识 Runtime类

在每一个JVM进程中都会存在一个Runtime类,这个类的主要功能是取得一些与运行时有关的环境属性或创建进程等操作。

在Runtime类定义的时候,它的构造方法就已经被私有化了,属于单例设计模式;只有唯一的一个Runtime类的对象,所以在Runtime类里面提供了一个static型方法,这个方法可以取得Runtime的实例对象。

getRuntime() 方法

  • 取得Runtime类的实例化对象

内存操作方法

totalMemory()

  • 返回所有可用的内存空间
public long totalMemory() ;

maxMemory()

  • 返回最大可用的内存空间
public long maxMemory() ;

freeMemory()

  • 返回空余内存空间
public long freeMemory() ;

实例观察

public class TestDemo {
public static void main(String [] args) {
Runtime run = Runtime.getRuntime() ; //取得Runtime类的实例化对象
System.out.println("MAX =" + run.maxMemory()) ;
System.out.println("TOTAL =" + run.totalMemory()) ;
System.out.println("FREE =" + run.freeMemory()) ;
}
} // 运行结果:
MAX =933232640
TOTAL =58720256
FREE =56327376
  • 产生内存垃圾
public class TestDemo {
public static void main(String [] args) {
Runtime run = Runtime.getRuntime() ; //取得Runtime类的实例化对象
System.out.println("MAX =" + run.maxMemory()) ;
System.out.println("TOTAL =" + run.totalMemory()) ;
System.out.println("FREE =" + run.freeMemory()) ;
System.out.println("==============================");
String str = "" ;
for (int i = 0; i < 22222 ; i++) {
str += i ; //制造垃圾
}
System.out.println("MAX =" + run.maxMemory()) ;
System.out.println("TOTAL =" + run.totalMemory()) ;
System.out.println("FREE =" + run.freeMemory()) ;
System.out.println("==============================");
run.gc(); // gc()方法,释放内存中的垃圾
System.out.println("MAX =" + run.maxMemory()) ;
System.out.println("TOTAL =" + run.totalMemory()) ;
System.out.println("FREE =" + run.freeMemory()) ;
System.out.println("==============================");
}
}
// 运行结果:
==============================
MAX =933232640
TOTAL =58720256
FREE =56327416
==============================
MAX =933232640
TOTAL =381681664
FREE =157595056
==============================
MAX =933232640
TOTAL =8388608
FREE =7307560
==============================
  • ps:gc() 方法,可以清理内存中留有的垃圾

GC 处理器

  • GC (Garbage Collector),垃圾收集器;指的是释放无用的垃圾内存空间

  • GC 会由系统不定期进行自动的垃圾回收,或调用Runtime类中的GC()方法来手工释放(回收)

有趣小功能—exec()方法

Runtime类有一个功能,可以调用本机的可执行程序并创建一个进程

  • 执行程序:
public Process exec (String command) throws IOException ;
  • 示范:
import java.io.IOException;

public class TestDemo {
public static void main(String [] args) throws IOException {
Runtime run = Runtime.getRuntime();
Process pro = run.exec("mspaint.exe"); //调用本机可执行程序(画板)
System.out.println(pro);
// pro是exec执行后返回的一个进程ID信息
Thread.sleep(20000); // 延迟 20000 ms
pro.destroy(); // 销毁进程
}
}
// 执行结果:
Process[pid=6832, exitValue="not exited"]

Process() 是一个进程的创建方法,exec()执行后,会返回进行信息,由进程方法Process接收为 pro ,故 pro 可以处理进程。

Runtime 类初探的更多相关文章

  1. 深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  2. 浅析Java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  3. java 23 - 3 单例模式实现Runtime类

    Runtime:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. 其中一个方法: exec(String command) 在单独的进程中执行指定的字符串 ...

  4. Runtime类

    Runtime类表示运行时的操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化. //========================= ...

  5. JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)

    1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...

  6. Runtime类及其常用方法

    每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.可以通过 getRuntime 方法获取当前运行时. 常用方法: 1.public static Runt ...

  7. 深入研究java.lang.Runtime类【转】

    转自:http://blog.csdn.net/lastsweetop/article/details/3961911 目录(?)[-] javalang 类 Runtime getRuntime e ...

  8. java.lang.Runtime类总结 【转】

    转自:http://blog.chinaunix.net/uid-128922-id-289994.html  Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类 ...

  9. 【转】深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

随机推荐

  1. Nginx配置Tomcat8反向代理出现 java.lang.IllegalArgumentException: The character [_] is never valid in a domain name.

    在配置Nginx的反向代理,访问反向代理的路径而出现了异常 java.lang.IllegalArgumentException: The character [_] is never valid i ...

  2. WGS84、WebMercator、GCJ02和BD09坐标系简介与转换

    WGS84(GPS): 地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系. 通过GPS可以直接获取WGS84下的坐标(B,L, ...

  3. ArcGIS api for JavaScript 3.27 按需显示需要的图层

    实例:现有一图层服务,现需要动态显示该图层中的一部分内容:点击一个图例,只显示这个图例的内容,再点击别的图例,原来的内容不消失,再次点击已被点击的图例才会消失. 思路:setLayerDefiniti ...

  4. JS 逻辑

    JS 逻辑 Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). Boolean 对象 您可以将 Boolean 对象理解为一个产生逻辑值的对象包装器. Boolean ...

  5. 微信退款异步通知报错Illegal key size or default parameters 的解决办法

    问题原因: Java几乎各种常用加密算法都能找到对应的实现.因为美国的出口限制,Sun通过权限文件(local_policy.jar.US_export_policy.jar)做了相应限制.因此存在一 ...

  6. SSH远程管理

    目录 SSH远程管理 ssh功能 SSH相关命令 Xshell连接不上虚拟机 scp命令 SSH验证方式 优化 免交互expect[扩展] 免交互sshpass[扩展] 简易跳板机 小结 SSH远程管 ...

  7. MySql 字段分组拼接

    drop table if exists T_Test; create table T_Test select 'A' parent, 'A1' child union all select 'A', ...

  8. SSH的本地、远程、动态端口转发实验笔记

    SSH端口转发 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一 ...

  9. 关于学习和开发Android的一点体会

    在谷歌中国安卓开发官网的 https://developer.android.google.cn/guide 之下有许多开发资料,有讲解,和例子.分门别类很清楚. 在 https://develope ...

  10. mysql 经典练习题上

    MY SQL 三张表 emp 表, 字段empno, ename, job, mgr, hiredate, sal, comm, deptno dept表 , 字段 deptno, dname, lo ...