Java中的Java.lang.Runtime类

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

每个Java应用程序都有一个Runtime类实例,它允许应用程序与运行应用程序的环境进行交互。可以从getRuntime方法获取当前运行时。

Java Runtime类的方法:

1)public static Runtime getRuntime(): 此方法返回与当前Java应用程序关联的实例或Runtime对象。

// Java program to illustrate getRuntime()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // get the current runtime assosiated with this process
        Runtime run = Runtime.getRuntime();
        // print the current free memory for this runtime
        System.out.println("" + run.freeMemory());
    }
}

输出:

124130416

2)public long freeMemory():此方法返回JVM(Java虚拟机)中的可用内存量

// Java program to illustrate freeMemory()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // print the number of free bytes
        System.out.println("" + Runtime.getRuntime().freeMemory());
    }
}

输出:

124130416

3)public long totalMemory():此方法返回JVM(Java虚拟机)中的总内存量

// Java program to illustrate totalMemory()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // print the number of total bytes
        System.out.println("" + Runtime.getRuntime().totalMemory());
    }
}

输出:

124780544

4)public Process exec(String command)抛出IOException:此方法在单独的进程中执行给定的命令。

异常:

1)SecurityException:如果存在安全管理器且其checkExec方法不允许创建子进程

2)IOException:如果发生I / O错误

3)NullPointerException:如果command为null

4)IllegalArgumentException:如果命令为空

// Java program to illustrate Process exec()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        try
        {
            // create a process and execute google-chrome
            Process process = Runtime.getRuntime().exec("google-chrome");
            System.out.println("Google Chrome successfully started");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

Google Chrome successfully started

注意:替换为您要启动的任何软件。在Linux上工作,google-chrome只是这样编写的。在windows / mac中可能有所不同。

5)public void addShutdownHook(Thread hook):此方法注册一个新的虚拟机JVM Shutdown Hook线程。

异常:

1)IllegalArgumentException:如果已经注册了指定的挂钩,或者可以确定挂钩已在运行或已经运行

2)IllegalStateException:如果虚拟机已经在关闭的过程中

3)SecurityException: 如果安全管理器拒绝RuntimePermission(“shutdownHooks”)

// Java program to illustrate addShutdownHook()
// method of Runtime class
public class GFG
{
    // a class that extends thread that is to be called when program is exiting
    static class Message extends Thread
    {
        public void run()
        {
            System.out.println("Program exiting");
        }
    }
    public static void main(String[] args)
    {
        try
        {
            // register Message as shutdown hook
            Runtime.getRuntime().addShutdownHook(new Message());
             
            // cause thread to sleep for 3 seconds
            System.out.println("Waiting for 5 seconds...");
            Thread.sleep(5000);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

Waiting for 5 seconds...
Program exiting

6)public boolean removeShutdownHook(Thread hook):此方法取消注册先前注册的JVM Shutdown Hook虚拟机关闭挂钩。

// Java program to illustrate removeShutdownHook()
// method of Runtime class
public class GFG
{
    // a class that extends thread that is to be called when program is exiting
    static class Message extends Thread
    {
        public void run()
        {
            System.out.println("Program exiting");
        }
    }
    public static void main(String[] args)
    {
        try
        {
            Message p = new Message();
            // register Message as shutdown hook
            Runtime.getRuntime().addShutdownHook(p);
             
            // cause thread to sleep for 3 seconds
            System.out.println("Waiting for 5 seconds...");
            Thread.sleep(5000);
             
            // remove the hook
            Runtime.getRuntime().removeShutdownHook(p);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

Waiting for 5 seconds...

7)public int availableProcessors():此方法返回JVM(Java虚拟机)可用的处理器数。

// Java program to illustrate availableProcessors()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // check the number of processors available
        System.out.println("" + Runtime.getRuntime()
                                    .availableProcessors());
         
    }
}

输出:

4

8)public void exit(int status):此方法通过启动其关闭序列来终止当前运行的Java虚拟机。

// Java program to illustrate exit()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // cause the program to exit
        Runtime.getRuntime().exit(0);
 
        //Nothing will run now.
        System.out.println("Program Running Check");
    }
}

输出:

No Output

9)public void traceInstructions(boolean a):此方法启用或禁用对指令的跟踪。如果boolean参数为true,那么它将建议JVM(Java虚拟机)在执行时为虚拟机中的每条指令发出调试信息。

// Java program to illustrate traceInstructions()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // start tracing for instructions
        Runtime.getRuntime().traceInstructions(true);
 
        System.out.println("Enabled");
        Runtime.getRuntime().traceInstructions(false);
        System.out.println("Disabled");
 
    }
}

输出:

Enabled
Disabled

10)public void traceMethodCalls(boolean a):此方法启用或禁用方法调用的跟踪。如果布尔参数为truethen,则表明Java虚拟机会在调用虚拟机时为每个方法发出调试信息。

// Java program to illustrate traceMethodCalls()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
      // start tracing for instructions
      System.out.println("Enabling..");
 
      Runtime.getRuntime().traceMethodCalls(true);
      System.out.println("Enabled");
    }
}

输出:

Enabling..
Enabled

11)public void loadLibrary(String libname):此方法使用指定的库名称加载动态库。包含代码的文件从本地系统从常规获取库文件的位置加载。

异常:

1)UnsatisfiedLinkError: 如果库不存在。

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

// Java program to illustrate loadLibrary()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // load a library that is home/saket/Desktop folder
        Runtime.getRuntime().loadLibrary("/home/saket/Desktop/Library");
 
        System.out.println("Library Loaded Successfully");
    }
}

输出:

Library Loaded Successfully

12)public void load(String filename):此方法将指定的文件名加载为动态库。filename参数必须是完整的路径名。

异常:

1)UnsatisfiedLinkError: 如果库不存在。

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

// Java program to illustrate load()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // load a library that is home/saket/Desktop folder
        Runtime.getRuntime().loadLibrary("/home/saket/Desktop/File");
 
        System.out.println("Library Loaded Successfully");
    }
}

输出:

Library Loaded Successfully

13)public void gc():此方法运行垃圾收集器。调用此方法表明Java虚拟机花费了大量精力来回收未使用的对象,以使其当前占用的内存可用于快速重用。

// Java program to illustrate gc()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // run the garbage collector
        Runtime.getRuntime().gc();
 
        System.out.println("Running");
    }
}

输出:

Running

14)public void runFinalization():此方法运行待完成的任何对象的终结方法。它表明HVM(Java虚拟机)花费了大量精力来运行已被发现被丢弃但其终结方法尚未运行的对象的finalize方法。

// Java program to illustrate runFinalization()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // run the finalization
        Runtime.getRuntime().runFinalization();
 
        System.out.println("Finalized");
    }
}

输出:

Finalized

15)public long maxMemory():此方法返回Java虚拟机将尝试使用的最大内存量。如果没有固有限制,则返回值Long.MAX_VALUE。

// Java program to illustrate maxMemory()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // print the maximum memory
        System.out.println("" + Runtime.getRuntime().maxMemory());
    }
}

输出:

922746880

16)public void halt(int status):此方法强制终止当前运行的Java虚拟机。此方法永远不会正常返回。应谨慎使用此方法。

异常:

SecurityException:如果存在安全管理器且其checkExit方法不允许具有指定状态的退出

// Java program to illustrate halt()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        // halt this process
        Runtime.getRuntime().halt(0);
 
        // print a string, just to see if it process is halted
        System.out.println("Process is still running.");
    }
}

输出:

no output

17)public Process exec(String [] cmd):此方法在单独的进程中执行指定的命令和参数。这是一种方便的方法。

异常:

1)IndexOutOfBoundsException:如果cmd是一个空数组(长度为0)

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

4)IOException:如果发生I / O错误

// Java program to illustrate exec()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        try
        {
            String[] cmd = new String[2];
            cmd[0] = "atom";
            cmd[1] = "File.java";
            // create a process and execute cmdArray
            Process process = Runtime.getRuntime().exec(cmd);
 
            // print another message
            System.out.println("File.java opening in atom");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

File.java opening in atom

18)public Process exec(String command,String [] envp,File dir):此方法在具有指定环境和工作目录的单独进程中执行指定的字符串命令。这是一种方便的方法。

异常:

1)IndexOutOfBoundsException:如果cmd是一个空数组(长度为0)

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

4)IOException:如果发生I / O错误

// Java program to illustrate exec()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        try
        {
            // create a file with the working directory we wish
            File f = new File("/home/saket/Desktop");
            
            // create a process and execute gedit and currect environment
            Process process = Runtime.getRuntime().exec("gedit", null, f);
            System.out.println("Gedit opening.");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

Gedit opening.

19)public Process exec(String command,String [] envp):此方法在具有指定环境的单独进程中执行指定的字符串命令。这是一种方便的方法,其行为方式与调用exec(command,envp,null)完全相同。
异常:

1)IndexOutOfBoundsException:如果cmd是一个空数组(长度为0)

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

4)IOException:如果发生I / O错误

// Java program to illustrate exec()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        try
        {
            // create a file with the working directory we wish
            File f = new File("/home/saket/Desktop");
            
            // create a process and execute gedit and currect environment
            Process process = Runtime.getRuntime().exec("gedit", null);
            System.out.println("Gedit opening.");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

Gedit opening.

20)public Process exec(String [] cmdarray,String [] envp,File dir):此方法在具有指定环境和工作目录的单独进程中执行指定的命令和参数。给定一个字符串数组cmdarray,表示命令行的标记,以及一个字符串envp数组,表示“环境”变量设置,此方法创建一个执行指定命令的新进程。
例外:

1)IndexOutOfBoundsException:如果cmd是一个空数组(长度为0)

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

4)IOException:如果发生I / O错误

// Java program to illustrate exec()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        try
        {
            String[] cmd = new String[2];
            cmd[0] = "atom";
            cmd[1] = "File.java";
            // create a file with the working directory we wish
            File dir = new File("/home/saket/Desktop");
            // create a process and execute cmdArray
            Process process = Runtime.getRuntime().exec(cmd, null, dir);
            System.out.println("File.java opening.");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

File.java opening.

21)public Process exec(String [] cmdarray,String [] envp):此方法在具有指定环境的单独进程中执行指定的命令和参数。这是一种方便的方法。调用exec(cmdarray,envp)形式的行为与调用exec(cmdarray,envp,null)完全相同。

例外:

1)IndexOutOfBoundsException:如果cmd是一个空数组(长度为0)

2)NullPointerException:如果libname为null。

3)SecurityException:如果checkLink方法不允许加载指定的动态库。

4)IOException:如果发生I / O错误

// Java program to illustrate exec()
// method of Runtime class
public class GFG
{
    public static void main(String[] args)
    {
        try
        {
            String[] cmd = new String[2];
            cmd[0] = "atom";
            cmd[1] = "File.java";
            // create a file with the working directory we wish
            File dir = new File("/home/saket/Desktop");
            // create a process and execute cmdArray
            Process process = Runtime.getRuntime().exec(cmd, null);
            System.out.println("File.java opening.");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出:

File.java opening.
  •   本文标题:Java中的Java.lang.Runtime类 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4982.html
    扫描二维码添加微信 
  • ,领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘优惠券!添加微信后,分享淘宝选中的机械键盘给淘宝机器人即可领取!
    支持我们,就用微信淘宝!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读