[Fondation Java] Utilisation de la classe d'exécution

Qu'est-ce que la classe Runtime?

  1. Chaque programme java équivaut à en démarrer un au moment de l'exécution, JVM进程et chacun JVM进程correspond à un RunTime实例.

  2. RunTime est instancié par la JVM, et s'il est utilisé 单例设计模式, l' getRuntime()objet instancié doit être obtenu via la méthode à l' intérieur de RunTime
    Insérez la description de l'image ici

  3. Par les méthodes de l'objet Runtime查看Java虚拟机的状态以及控制虚拟机的行为。

  4. De nombreuses fonctions de System sont équivalentes à Runtime.getRuntime (), qui montre la proximité de la connexion entre System et Runtime.实际上System是依赖于Runtime类的。

Que peut faire la classe Runtime

1. Afficher la mémoire système

Insérez la description de l'image ici

Les 4 méthodes natives de la figure ci-dessus renvoient respectivement le nombre de cœurs JVM, la mémoire libre, la mémoire totale et la mémoire maximale

@Test
public void runtimeInfo() {
    
    
    Runtime runtime = Runtime.getRuntime();
    int processors = runtime.availableProcessors();//法返回JVM(Java虚拟机)可用的处理器数。
    long freeMemory = runtime.freeMemory();//返回JVM(Java虚拟机)中的可用内存量
    long maxMemory = runtime.maxMemory();//返回JVM(Java虚拟机)中的总内存量
    long totalMemory = runtime.totalMemory();//返回Java虚拟机将尝试使用的最大内存量。如果没有固有限制,则返回值Long.MAX_VALUE。

    // processors=4, freeMemory=165713400, maxMemory=2837446656, totalMemory=192937984
    logger.debug("processors={}, freeMemory={}, maxMemory={}, totalMemory={}", processors, freeMemory, maxMemory, totalMemory);
}

2. Appelez le programme local du système

Insérez la description de l'image ici

//通过调用 javac -version 获取JDK版本信息
 @Test
    public void getJavaVersion() {
    
    
        try {
    
    
            Process process = Runtime.getRuntime().exec("java -version");
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line = null;
            while ((line = br.readLine()) != null) {
    
    
                System.out.println(line); 
            }

            process.waitFor();
            System.out.println("Process exitValue: " + process.exitValue()); //0
        } catch (Throwable t) {
    
    
            t.printStackTrace();
        }
    }

Insérez la description de l'image ici

La principale méthode de processus

destroy()//杀掉子进程。

exitValue()//返回子进程的出口值。

InputStream getErrorStream()//获得子进程的错误流。

InputStream getInputStream()// 获得子进程的输入流。

OutputStream getOutputStream()//获得子进程的输出流。

waitFor()// 导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。
/*一般执行linux命令使用比较多的是waitFor(),诸塞等待子进程完成该linux命令。然后再继续线程后续的代码。*/

3. Chargez la bibliothèque de liens dynamiques

load () peut charger des bibliothèques de liens dynamiques, comme des fichiers sous Linux et des fichiers dll sous win.
Insérez la description de l'image ici


4. Arrêtez la machine virtuelle

Runtime.getRuntime().exit(0);//通过启动JVM关闭命令来终止当前运行的Java虚拟机。
Runtime.getRuntime().halt(0);//此方法强制终止当前运行的Java虚拟机。此方法永远不会正常返回。应谨慎使用此方法。

Je suppose que tu aimes

Origine blog.csdn.net/qq877728715/article/details/108923776
conseillé
Classement