博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Runtime获取系统资源信息类
阅读量:4185 次
发布时间:2019-05-26

本文共 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()
  • 手工进行GC处理: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?如何处理?

  • GC(Gargabe Collector)垃圾收集器,是可以由系统自动调用的垃圾释放功能,或者使用Runtime类中gc()方法进行调用。

转载地址:http://ynfoi.baihongyu.com/

你可能感兴趣的文章
数据的表前缀
查看>>
ActiveMQ入门
查看>>
hibernate的延时加载的get和load的区别
查看>>
springmvc避免IE执行AJAX时,返回JSON出现下载文件
查看>>
@Resource和@Autowire的区别
查看>>
java的非对称加密算法
查看>>
spring方法拦截器 MethodInterceptor
查看>>
Greenplum八点劣势是真的吗
查看>>
hbase与传统数据的区别
查看>>
Green Plum测试报告
查看>>
javax.crypto加密
查看>>
java判断socket是否断开
查看>>
java获得IP
查看>>
UDP丢包及无序的现象
查看>>
java的反射
查看>>
java的Calendar类
查看>>
列式数据库
查看>>
jsp中post方式请求乱码
查看>>
Java截图
查看>>
Collections的随机排序
查看>>