【Java】Runtime类的使用

mac2026-01-29  4

Runtime类的使用

每一个Java应用程序在运行时都会创建一个Runtime类的实例,通过这个实例,应用程序可以和环境进行交互操作。Runtime没有构造方法,不能直接创建类的实例,而只能通过它提供的getRuntime()方法来获取一个指向Runtime对象的引用(或称句柄)。

Runtime类提供的方法有很多,可以查看其API文档:https://docs.oracle.com/javase/9/docs/api/overview-summary.html


Runtime的内存管理: Runtime提供的totalMemory()来获取虚拟机的总内存,freeMemory()方法获取虚拟机中的空闲内存大小,另外还有一个gc()方法可以启动内存收集线程,以清空内存中的垃圾。 下述中先申请一些空间,但不使用它;然后查看剩余空间,而后通过gc()启动垃圾收集机制,再次查看剩余空间。

public class Demo { public static void main(String[] args) throws InterruptedException { Runtime runtime=Runtime.getRuntime(); //获取与当前运行类相关联的runtime实例 System.out.println("虚拟机可用空间:"+runtime.totalMemory()); System.out.println("申请空间之前剩余空间:"+runtime.freeMemory()); //System.out.println(System.currentTimeMillis()); //申请空间 Integer []integer=new Integer[10240]; System.out.println("申请空间之后剩余:"+runtime.freeMemory()); runtime.gc(); //启动垃圾收集线程 Thread.sleep(1000); //垃圾回收优先级较低,即使用gc()来调用它,也不一定立即执行,只有在CPU有空闲时才会启动运行。 System.out.println("启动垃圾回收后剩于:"+runtime.freeMemory()); System.out.println("=============================="); for(int i=0;i<10240;i++){ //为对象赋值 integer[i]=i+1; } Thread.sleep(1000); System.out.println("为对象赋值后剩余:"+runtime.freeMemory()); runtime.gc(); //再次启动 Thread.sleep(1000); System.out.println("启动垃圾回收后剩于:"+runtime.freeMemory()); } }

执行其他程序: Java程序可以调用操作系统中存在的其他进程(程序),这只需要使用Runtime的exec()方法就可以。 无论启动程序是否成功,exec()方法都会立即返回。若启动失败,则会抛出一个IOException异常。

启动记事本:

import java.io.IOException; public class runNotepad { public static void main(String[] args){ try { Runtime runtime1=Runtime.getRuntime(); // //也可以指定相对路径 // String cmdArray[]={"Notepad","绝对路径"}; runtime1.exec("Notepad"); //启动windows下的记事本 } catch (IOException e) { System.out.println("无法启动!"); e.printStackTrace(); } } }

runtime1.exec()方法并没有指定记事本路径的情况下,JVM会自动到系统预先定义好的搜索路径下面去查找。运行如下:


最新回复(0)