每个java程序在运行时相当于启动了一个JVM进程,每个JVM进程都对应一个RunTime实例。
RunTime是JVM负责实例化的,且使用了单例设计模式,必须通过RunTime内部的getRuntime()方法获取实例化对象
通过Runtime对象的方法可以查看Java虚拟机的状态以及控制虚拟机的行为。
System许多函数的使用都是等价于Runtime.getRuntime(),可见System和Runtime之间的联系是多么密切,实际上System是依赖于Runtime类的。
上图4个native方法,分别返回JVM内核数、空闲内存、总内存、最大内存
@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); }Process的主要方法
destroy()//杀掉子进程。 exitValue()//返回子进程的出口值。 InputStream getErrorStream()//获得子进程的错误流。 InputStream getInputStream()// 获得子进程的输入流。 OutputStream getOutputStream()//获得子进程的输出流。 waitFor()// 导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。 /*一般执行linux命令使用比较多的是waitFor(),诸塞等待子进程完成该linux命令。然后再继续线程后续的代码。*/load()可以加载动态链接库,如linux下的so文件,win下的dll文件。