初识JAVA:Runtime类(重点)

2022-05-06 17:08:04 浏览数 (1)

在每一个JVM进程之中,都会存在一个运行时的操作类的对象,而这对象所属的类型就是Runtime类。打开这个类的文档可以发现,在这个类之中并没有构造方法定义,可是按照之前所学,每个类至少有一个构造方法,而这个类的构造方法实际上存在只是不被外部看见而已,因为构造方法被私有化了,这是一个标准的单例设计模式。既然是单例设计模式则在这个类就一定会存在一个static型的方法,可以取得本类的实例化对象:public static Runtime getRuntime()。 而当取得了这个类的实例化对象之后,可以利用这个类取得一些JVM的信息,

· 取得最大可用内存:public long maxMemory(); · 总共可以使用的内存:public long totalMemory(); · 空闲的内存:public long freeMemory()。

发现取得内存信息的时候所有的数据返回的类型是long,在之前讲解基本数据类型的时候强调long型数据的使用就在两种情况:表示文件大小、表示日期时间。 在Runtime类有一个非常重要的方法:public void gc(),运行垃圾收集器,释放垃圾空间。

代码语言:javascript复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		Runtime run = Runtime.getRuntime() ;	// 取得对象
		System.out.println("1.MAX_MEMORY:"   run.maxMemory());
		System.out.println("1.TOTAL_MEMORY:"   run.totalMemory());
		System.out.println("1.FREE_MEMORY:"   run.freeMemory());
		String str = "" ;
		for (int x = 0; x < 30000; x  ) {
			str  = x ;	// 产生垃圾
		}
		System.out.println("2.MAX_MEMORY:"   run.maxMemory());
		System.out.println("2.TOTAL_MEMORY:"   run.totalMemory());
		System.out.println("2.FREE_MEMORY:"   run.freeMemory());
		run.gc() ;
		System.out.println("3.MAX_MEMORY:"   run.maxMemory());
		System.out.println("3.TOTAL_MEMORY:"   run.totalMemory());
		System.out.println("3.FREE_MEMORY:"   run.freeMemory());
	}
}

面试题:请解释一下什么叫gc()?Java是如何处理的?

GC(Garbage Collector):垃圾收集器,可以释放掉垃圾空间所占用的内存。在java之中GC有两种方式处理:一种是由JVM不定期的执行GC操作,另外一种是由用户自己手工调用Runtime类的gc()方法进行垃圾空间的释放。

0 人点赞