Runtime 类|学习笔记

简介: 快速学习 Runtime 类

开发者学堂课程【Java高级编程Runtime 类】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/317


Runtime 类


一、简介

二、开发操作流程

三、面试题


一、简介

Runtime 描述的是运行时的状态,也就是说在整个的 JVM 之中,Runtime 类是唯一一个与 JVM 运行状态有关的类,并且都会默认提供有一一个该类的实例化对象。

由于在最每一个 JVM 进程里面只允许提供有一个 Runtime 类的对象,所以这个类的构造方法被默认私有化了,那么就证明该类使用的是单例设计模式,并且单例设计模式一定会提供有一个 static 方法获取本类。

以下是 Runtime 类的主要操作形式。

图片9.png


二、开发操作流程

由于 Runtime 类属于单例设计模式,如果要想获取实例化对象,那么就可以依靠类中的 getRuntime() 方法完成:

●获取实例化对象: public static Runtime getRuntime();。

通过这个类中的 availableProcessors 方法可以获取本机的 CPU 内核数.

范例:获取Runtime类对象

package cn.mldn.demo;

public class JavaAPIDemo

public static void main(String[] args) throws Exception

Runtime run = Runtime.getRuntime();//获取实例化对象System.out.println(run.availableProcessors());

但是除了以上的方法之外,在 Runtime 类里面还提供有以下四个重要的操作方法:

●获取最大可用内存空间; public long maxMemory()默认的配置为本机系统的 4分之 1。

●获取可用内存空间: public long totalMemory();默认的配置为本机系统的 64分之 1。

●获取空闲内存空间: public long freeMemory();

●手工进行GC处理: public void gc()


范例:观察内存状态

package cn.mldn.demo;

public class JavaAPIDemo

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< Integer.MAX_VALUE;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.print1n("【3】MAX_MEMORY:"+ run.maxMemory());

System.out.println("【3】TOTAL_MEMORY:"+ run.totalMemory()

System.out.println("【3】FREE_MEMORY:"+ run.freeMemory());

三、面试题

请问什么是 GC?如何处理?

答:GC(Garbage Collector) 垃圾收集器,是可以由系统自动调用的垃圾释放功能,或者使用 Runtime 类的 gc()手工调用。

相关文章
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
机器人 区块链
币圈Swap夹子套利搬砖机器人合约部署源码开发
mapping(address => bool) private[ isApproved ]; mapping(address => mapping(address => uint256)) private[ swapOrders ];
|
Unix Linux
Touch命令使用指南:创建、更新和修改文件时间戳
Touch命令使用指南:创建、更新和修改文件时间戳
1399 0
|
区块链 安全 存储
带你读《区块链工程实践 行业解决方案与关键技术》之二:电力市场交易结算智能合约
本书是一部能全方位指导区块链项目落地的实操性著作。通过5个经典的行业案例,从总体设计、业务设计、功能接口设计、架构设计这4个维度详细讲解了如何构建一个完整的区块链行业解决方案,同时讲解了实现每个解决方案需要的关键技术和方法。
|
2月前
|
SQL 运维 关系型数据库
【产品升级】Dataphin V5.0版本发布:助力出海业务、增全量一体集成、异步调用API等更多功能等你发现
Dataphin是瓴羊推出的智能数据建设与治理平台,基于阿里巴巴内部实践,提供一站式数据建设与治理能力。V5.0版本研发新增支持Databricks作为离线计算引擎、支持MySQL数据库一键增全量同步、支持管理Hudi、Delta Lake表等;资产运营与消费持续提效,支持批量编辑目录名称及描述、Quick BI仪表板的上架管理等功能,增加资产可用性与盘点效率。
211 8
|
SQL Java 关系型数据库
JDBC详解
Java Database Connectivity(JDBC)是Java语言中用于访问关系型数据库的标准接口,定义了一组API,使Java程序能以统一方式连接、访问和操作不同关系型数据库,简化数据库操作,提高Java应用程序的可移植性和可维护性。使用JDBC进行数据库操作主要包括创建数据源对象、建立连接、构造和执行SQL语句及释放资源等步骤。此外,还可以使用Set系列方法设置值,并使用get系列方法获取查询结果。
981 2
JDBC详解
|
存储 SQL NoSQL
深入理解数据库管理系统(DBMS)及其在现代应用中的重要性
一、引言 随着信息技术的飞速发展,数据已成为现代社会中不可或缺的资源
1460 3
|
12月前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
编解码 iOS开发 Windows
B站电脑版,原来还隐藏着这个白嫖福利|Windows如何打开heic图片?
B站电脑版,原来还隐藏着这个白嫖福利|Windows如何打开heic图片?