Java中的Runtime类
来源:互联网 发布:淘宝上抓卖保健品的 编辑:程序博客网 时间:2024/04/30 01:41
了解Runtime类
在每一个Java 进程之中都会存在一个Runtime类对象,由于此类的对象是由Java进程自己维护的,所以在整个Runtime类设计的过程中,只为用户提供唯一的一个实例化对象,所以这个类所使用的就是单例设计模式,构造方法被私有化了。(如果是单例设计模式,构造方法被私有化,其内部也会有一个方法能够取得当前的实例对象),所以其类的内部一定会提供一个static方法取得本类的实例化对象。
例如:取得我们Runtime类对象: public static Runtime getRuntime()
那么获取对象之后我们可以做什么呢? 在Runtime类中定义有如下可以去的内存大小的方法:
- 空闲内存大小: public long freelMemory()
- 总共可用内存大小:public long totalMemory()
- 最大可用内存大小:public long maxMemory()
范例:取得内存大小
package dev;
public class test1 {
public static void main(String[] args) {
Runtime n=Runtime.getRuntime();
System.out.println(n.freeMemory());
System.out.println(n.maxMemory());
System.out.println(n.totalMemory());
}
}
输出结果:(这些都是字节,真正的resule=resule/1024/1024)
FREE = 15528232 (15M)
MAX = 259522560 (248M)
TOTAL = 16252928 (16M)
面试题:Java如何调整可用内存的大小?
扩展:JVM内存划分图
Java中内存划分主要有两个组成部分:
堆内存:保存的实例化对象的内容,在每个JVM进程中之中,对象的对内存都会由垃圾收集器自动的管理内存回收问题。 非堆内存:(Eden + Front Space + To Space):主要用于产生新的对象: |- 所有的方法全局方法区 |- 所有的 static 的全局数据区 |- 永生代:负责存放反射对象的操作空间;
如果我们要调整我们的内存大小,只能调我们的堆内存空间,他的调整有如下三个参数:
"-Xms" : 初始分配大小,为物理内存的1/64,最多不超过1G;"-Xmx" : 最大分配内存,为物理内存的1/4;"-Xmm" : 年轻代内存大小;
在Runtime 类中提供有垃圾的收集机制:public void gc()
问题:那么垃圾处理经历了哪些问题呢?
简单的说:
1、新的对象保存在Eden 区中,之后的此对象保存在年轻代区;而后在进行GC之后所有被保存下来的年轻代中的对象(从GC,MinorGC),将保存在旧生带(主GC,MajorGC)。2、如果再有新的对象,从年轻代回收,再找旧生代,最后都没空间,进行垃圾的全部所描(Full GC)。
面试题:请问什么是GC 如何操作?
GC 指的是垃圾收集,对于GC操作可以利用Runtime类中的gc()方法手工释放,或者是利用系统自动进行释放来进行垃圾回收处理;
总结:
1、Runtime 使用了单例设计模式,每一个JVM进程只会存在有一个Runtime类对象。
2、Runtime 类提供有gc()方法,可以进行垃圾收集处理。
- java中的Runtime类
- Java中的Runtime类
- java中的runtime类
- java中的Runtime类和Process类
- java.util.Runtime类中的addShutdownHook()方法
- java中的Runtime类的作用
- java中的Runtime
- java中的Runtime新用法
- JAVA中的System类、Runtime类、Date类、Calendar类和Runtime简介
- Java中的一些常见类System、Runtime、Date与Carendar
- Java RunTime类
- Java RunTime类
- Java RunTime类
- java_Runtime类
- java Runtime类
- Java Runtime类
- java runtime类
- Java RunTime类
- python | 读文件编码问题 | UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 34: illegal mu
- 七、在LinkedHashMap中,String a = new String("abcd");String b = new String("abcd");都作为key,会如何?
- 配置Mybatis
- IT人士必去的10个网站
- vue.js项目打包上线
- Java中的Runtime类
- 华为OJ——数据分类处理
- Leetcode--Add to List 201. Bitwise AND of Numbers Range
- 自动调用,代码块
- Elasticsearch概述
- java.util.zip.ZipException: duplicate entry(重复依赖多版本的类库)
- JS本地数据库创建和查询
- Linux GCC共享内存
- RabbitMQ分布式集群架构