java中GC垃圾回收机制如何调优问题

本文探讨了在Java中进行垃圾回收(GC)优化的重要性,指出只有在特定情况下才需要进行GC优化,并提供了优化目标、基本原则和步骤。优化主要包括减少对象创建、选择合适的GC类型、调整内存大小以及监控和分析GC状态。建议在必要时通过监控和实验对比来确定最佳的GC参数配置。

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

并非所有基于Java的应用都需要进行GC优化,例如基于Java的系统有如下参数或行为:

  • 已经通过-Xms 和 -Xmx 指定了内存大小
  • 包含了 -server 参数
  • 系统中未出现 超时 等日志

换句话说,如果你没有设置内存大小而且出现了大量超时日志,那么你需要在系统中进行GC优化了

但是有件事要铭记于心:GC优化是你最后的手段

思考下GC优化的根本原因:Java中创建的对象由垃圾收集器来清理,同时待清理对象的数量和各类GC的执行次数又和创建对象总数量成正比。因此,为了控制GC的执行,首先要做的是 减少创建对象的总数量

俗话说,”积少成多”。我们需要关注一些小事情,否则”养成气候”之后将难以驾驭。例如:

  • 使用StringBuilder或StringBuffer代替String
  • 尽可能少的输出日志

然而,有些场景我们也无能为力。我们知道,XML和JSON的解析会消耗大量的内存,就算尽可能少的使用String和日志也作用不大,因为还是会使用大量的临时内存来解析它们,有时甚至是10-100M。但是,又不太可能不使用XML和JSON,只能任由内存被消耗。

如果在几次参数调整后内存使用情况有所改善,你就可以进行GC优化了。我将GC优化的目的分成两类:

1.将转移到老年代的对象数量降到最少

2.减少Full GC的执行时间 

Oracle JVM提供了分代垃圾回收机制(JDK1.7及

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值