java_opts gc回收器_Java垃圾回收器分类及相关参数配置说明

本文介绍了Java垃圾回收器的工作原理,包括强引用、软引用、弱引用和虚引用的概念。详细讲解了JVM的垃圾回收机制,并展示了不同类型的垃圾收集器,如串行、并行和并发收集器。此外,还提供了详细的Java_OPTS参数配置说明,帮助优化JVM内存管理和垃圾回收性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、垃圾回收机原理

Jvm(Java虚拟机)通过专属线程来回收不再使用的内存对象空间,对于处理该任务的进程叫做“垃圾回收器”,根据用户对系统模块的定制或优化需求可以配置不同的垃圾回收器来更有效执行(参考第二章节)。触发垃圾回收器回收场景如下(不在使用的对象)对象没有引用@b@程序中使用System.exit()@b@发生未捕获异常@b@对象所属的作用域执行完毕@b@程序被意外终止(kill所属进程)

对于对象的引用又分为强引用、软引用、弱引用、虚引用,下面分别举例说明

强引用 - 通常我们创建的对象都是这种形式,对象只有在主动释放引用后才会被释放,形式如下B b=new B();

软引用 - 采用SoftReference来实现,其内存不足时被回收(用例缓存),形式如下Object obj = new Object();@b@SoftReference sf = new SoftReference(obj);@b@obj = null;@b@sf.get();//有时候会返回null

弱引用 - 采用WeakReference来实现,采用弱引用建立引用的对象没有强引用后,GC时及会被自动释放(第二次垃圾回收时回收,用例 - 监控对象内存状态),形式如下Object obj=new Object();@b@WeakReference weakRef=new WeakReference(object);//可通过weakRef.get来获取对象@b@object=null@b@if(wf.isEnQueued())@b@System.out.print("WeakReference"对象即将被回收);

虚引用 - 采用PhantomReference来实现,每次垃圾回收的时候都会被回收(用例跟踪对象是否从内存中删除)Object obj = new Object();@b@PhantomReference pf = new PhantomReference(obj);@b@obj=null;@b@pf.get();//永远返回null @b@if(pf.isEnQueued())@b@System.out.print("PhantomReference"对象已经删除);

另对象在内存的存活机制 - 当新对象要分配到内存中,首先检查空间是否足够,不够就触发GC进行实时回收,如果对象被长时间引用,改对象逐渐从eden到survivor,最后保存到老年代。下面用java visualVM查看,当新生代满了,对象会转移到老年代,进行加载实例化,如果老年代满了,就抛出outOfMemory异常(详情参见内存优化说明页),如下图1-1所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值