Java建议:不要主动进行垃圾回收

本文深入分析了在Java开发中滥用System.gc进行手动垃圾回收的潜在风险,包括对系统响应性的严重影响以及长时间的回收过程。通过详细解释垃圾回收机制的工作原理,提出了一套优化策略,旨在避免此类操作,从而提升应用性能和用户体验。
部署运行你感兴趣的模型镜像

一、建议

不要调用system.gc,即使经常出现内存溢出也不要调用,内存溢出是可分析的,是可以查找原因的,GC可不是一个好招数

二、分析

System.gc主动进行垃圾回收时一个非常危险的动作。因为它要停止所有的响应,才能检查内存中是否有可回收的对象,这对一个应用系统风险极大。

三、场景

如果一个Web应用,所有的请求都会暂停,等待垃圾回收器执行完毕,若此时堆内存(Heap)中的对象少的话则可以接受,一旦对象较多(现在的Web项目越做越大,框架工具越来越多,加载到内存中的对象就更多了),这个过程非常耗时,可能是0.01秒,也可能是1秒,甚至可能是20秒,这就会严重影响到业务的正常运行。

又如这样一段代码:newString("abc"),该对象没有任何引用,对JVM来说就是个垃圾对象。JVM的垃圾回收器线程第一次扫描(扫描时间不确定,在系统不繁忙的时候执行)时把它贴上一个标签,说“你是可以给回收的”,第二次扫描时才真正地回收该对象,并释放空间。如果我们直接调用System.gc,就等于说“嗨,你,那个垃圾回收器过来检查一下有没有垃圾对象,回收一下”。程序主动招来了垃圾回收器,这意味着正在运行着的系统要让出资源,以供垃圾回收器执行。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值