Runtime 类初探

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 可以处理进程。

原文地址:https://www.cnblogs.com/wangyuyang1016/p/11094465.html

时间: 2024-10-09 16:31:07

Runtime 类初探的相关文章

深入研究java.lang.Runtime类

深入研究java.lang.Runtime类 一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用.      一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为.

JAVA API(二)System类与Runtime类

1.System类与Runtime类 1.1System类 System类对我们来说并不陌生,在之前学习的知识中,当我们需要打印结果时,使用的都是"System.out.println()"语句进行打印输出,这句代码中就使用了System类.这个类中定义了与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可.下表是System类常用的一些方法. 方法声明 功能描述 static void exit(int status)

浅析Java.lang.Runtime类

一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用.      一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为.       当Applet和其他不被信任的代

谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法

谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法 Java虚拟机threadJVM 最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些问题,很多人感到很疑惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有

Runtime类

Runtime类也在java.lang包中,这个类没有提供构造器,但是提供的却非静态方法,而是在方法中提供了一个静态方法来返回当前进程的Runtime实例,采用的单例设计模式. 其作用:可以对当前java程序进程进行操作.打开本机程序.获取虚拟机信息等. 举例:打开一个windows程序 import java.lang.*; import java.util.*; import java.io.*; class Test { public static void main(String[] a

Java中的Runtime类

Runtime类描述了虚拟机一些信息.该类采用了单例设计模式,可以通过静态方法 getRuntime()获取Runtime类实例.下面演示了获取虚拟机的内存信息: 1 package Main; 2 3 public class Main 4 { 5 public static void main(String[] args) throws Exception 6 { 7 Runtime runtime = Runtime.getRuntime(); 8 System.out.println("

Runtime类及其常用方法

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.可以通过 getRuntime 方法获取当前运行时. 常用方法: 1.public static Runtime getRuntime() 返回与当前 Java 应用程序相关的运行时对象.Runtime 类的大多数方法是实例方法,并且必须根据当前的运行时对象对其进行调用. 2.Process exec(String command)       在单独的进程中执行指定的字符串命令. 3.long fre

Runtime类中的freeMemory,totalMemory,maxMemory等几个方法

最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些题目,很多人感到很迷惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有时候不但没有减少,反而会增加.这些人对freeMemory()这 个方法的意义应该有一些误解,他们以为这个方法返回的是操纵系统的剩余可

深入研究java.lang.Runtime类(转)

一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用.      一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为.       当Applet和其他不被信任的代