Java 四大引用详解

本文详细介绍了Java中的四大引用类型:强引用、软引用、弱引用和虚引用,包括它们的概念、区别以及在内存管理中的作用。通过实例展示了在不同引用类型下对象的生命周期和垃圾回收行为,帮助理解JVM如何处理内存不足的情况。
摘要由CSDN通过智能技术生成

一、 GC回收日志打印基本设置

启动设置:

-verbose:gc             //开启gc日志    
-XX:+PrintGCDetails     //打印gc详情
-XX:+PrintGCDateStamps  //打印gc时间戳
-XX:+PrintHeapAtGC      //在进行GC的前后打印出堆的信息
-Xloggc:gc.log          //日志输出名称
-Xms3M                  //初始内存
-Xmx4M                  //最大可用内存

日志各个字段含义简述:

2019-03-28  日期

10:02:40.628+0800: 执行回收时间 

0.080: 启动JVM到该次垃圾回收时间

GC/Full GC :垃圾回收类型

Allocation Failure : 垃圾回收的原因,此时为Eden区空间不足

ParNew/CMS/Metaspace : 垃圾回收区域 新生代/老年代/元空间

[PSYoungGen: 510K->504K(1024K)]  清理前占用 -> 清理后占用(新生代内存总大小)

PS代表新生代的是使用的是Parallel Scavenge收集器垃圾收集器

[ParOldGen]  Par代表老年代使用的是Parallel old垃圾回收器

0.0006474 secs 表示回收的时间

510K->536K(3584K)  整个堆内存清理前占用 ——> 清理后占用(对内存总大小)

[Metaspace: 3304K->3304K(1056768K)] 这部分表示的是方法区的内存大小变化

[Times: user=0.00 sys=0.00, real=0.00 secs]

user 代表的是用户状态耗时0.00,

sys 系统状态耗时0.00,

real CPU实际的执行时间为0.00

Ergonomics:HotSpot自动选择和调优引发的FullGC

二、了解其概念及其区别

我们在实际开发中,往往会执行一些方法加载一些参数值到内存中,后期随着业务的发展、方法的执行等等大量的数据存在内存中,结果导致内存占用过多而产生的溢出异常,因此我们期望自己的放到内存中的对象也具有生命周期(如:内存不足时,jvm会自动回收掉某些对象从而避免OOM的错误)这个时候就需要用到软引用和弱引用

从JDK 1.2之后,Java 对引用的概念进行了扩充,将引用分为了&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值