本文共 1832 字,大约阅读时间需要 6 分钟。
Runtime类描述的是运行时的状态,也就是说在整个JVM之中,Runtime类是唯一一个与JVM运行状态有关的类,并且都会默认提供一个该类的实例化对象。
由于在每一个JVM进程里面只允许提供一个Runtime类的对象,所以这个类的构造方法被默认私有化了,并且该类使用的是单例设计模式,并且单例设计模式一定会提供一个static方法获取本类实例。 操作系统直接对CPU、进程、内存进行管理,程序执行过程中JVM通过操作系统提供的函数可以对cpu、进程、内存信息进行获取,JVM将资源信息通过Runtime类进行保存,在开发过程中要想获取系统的资源情况,必须通过Runtime类来获取,这时候也就必须保证Runtime的唯一。由于Runtime类属于单例设计模式,如果要想获取实例化对象,那么就可以依靠类中的getRuntime()方法完成
public static Runtime getRuntime();
通过Runtime类中的availableProcessors()方法可以获取本机的CPU的内核数:public native int availableProcessors();
**范例:**获取Runtime类对象public static void main(String[] args) { Runtime run = Runtime.getRuntime(); System.out.println(run.availableProcessors()); }
但是除以上的方法之外,在Runtime类里面还提供了有以下四个重要的操作方法:
public long maxMemory();
默认的配置为本机系统内存的四分之一public long totalMemory();
默认的配置为本机系统六十四分之一public long freeMemory()
public void gc();
**范例:**观察内存状态public class JavaApi { public static void main(String[] args) { Runtime run = Runtime.getRuntime(); System.out.println(run.availableProcessors()); System.out.println("【1】MEX_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】MEX_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】MEX_MEMORY:"+ run.maxMemory()); System.out.println("【3】TOTAL_MEMORY:" + run.totalMemory()); System.out.println("【3】FREE_MEMORY:" + run.freeMemory()); }}
面试题:请问什么是GC?如何处理?
转载地址:http://ynfoi.baihongyu.com/