当前位置: 首页 > 面试题库 >

常用 GC 调优策略有哪些?

糜淇
2023-03-14
本文向大家介绍常用 GC 调优策略有哪些?相关面试题,主要包含被问及常用 GC 调优策略有哪些?时的应答技巧和注意事项,需要的朋友参考一下
  1. GC 调优原则;
  2. GC 调优目的;
  3. GC 调优策略;

GC 调优原则

在调优之前,我们需要记住下面的原则:

多数的 Java 应用不需要在服务器上进行 GC 优化; 多数导致 GC 问题的 Java 应用,都不是因为我们参数设置错误,而是代码问题; 在应用上线之前,先考虑将机器的 JVM 参数设置到最优(最适合); 减少创建对象的数量; 减少使用全局变量和大对象; GC 优化是到最后不得已才采用的手段; 在实际使用中,分析 GC 情况优化代码比优化 GC 参数要多得多。

GC 调优目的

将转移到老年代的对象数量降低到最小; 减少 GC 的执行时间。

GC 调优策略

策略 1:将新对象预留在新生代,由于 Full GC 的成本远高于 Minor GC,因此尽可能将对象分配在新生代是明智的做法,实际项目中根据 GC 日志分析新生代空间大小分配是否合理,适当通过“-Xmn”命令调节新生代大小,最大限度降低新对象直接进入老年代的情况。

策略 2:大对象进入老年代,虽然大部分情况下,将对象分配在新生代是合理的。但是对于大对象这种做法却值得商榷,大对象如果首次在新生代分配可能会出现空间不足导致很多年龄不够的小对象被分配的老年代,破坏新生代的对象结构,可能会出现频繁的 full gc。因此,对于大对象,可以设置直接进入老年代(当然短命的大对象对于垃圾回收来说简直就是噩梦)。-XX:PretenureSizeThreshold 可以设置直接进入老年代的对象大小。

策略 3:合理设置进入老年代对象的年龄,-XX:MaxTenuringThreshold 设置对象进入老年代的年龄大小,减少老年代的内存占用,降低 full gc 发生的频率。

策略 4:设置稳定的堆大小,堆大小设置有两个参数:-Xms 初始化堆大小,-Xmx 最大堆大小。

策略5:注意: 如果满足下面的指标,则一般不需要进行 GC 优化:

MinorGC 执行时间不到50ms; Minor GC 执行不频繁,约10秒一次; Full GC 执行时间不到1s; Full GC 执行频率不算频繁,不低于10分钟1次。

 类似资料:
  • 本文向大家介绍Redis 淘汰策略有哪些?相关面试题,主要包含被问及Redis 淘汰策略有哪些?时的应答技巧和注意事项,需要的朋友参考一下 volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。 volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。 vo

  • 本文向大家介绍常用的 JVM 调优的参数都有哪些?相关面试题,主要包含被问及常用的 JVM 调优的参数都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 -Xms2g:初始化推大小为 2g; -Xmx2g:堆最大内存为 2g; -XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4; -XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2

  • OnStrategyStart – 在策略启动时调用,在第一笔行情到达之前 OnStrategyStop – 在策略结束时调用,在最后一笔行情之后 OnBarOpen – 在Bar行情最前沿调用(如,在日线数据开盘时买入) OnBar – 在所有行情的后沿调用(如,在日线数据收盘时买入) OnPositionOpened – 当一个新的交易开仓确认后调用 OnPositionChanged – 当

  • 调度策略即设置在满足指定条件时,将会根据偏好选择或排除在绑定某一类调度标签的宿主机创建虚拟机。 调度策略即设置在满足指定条件时,将会根据偏好选择或排除在绑定某一类调度标签的宿主机创建虚拟机。调度策略中的偏好将会覆盖调度标签中的默认偏好。调度策略将会影响最后的调度结果。 调度策略中偏好分为以下四种: 尽量使用(prefer):调度时优先使用拥有这种调度标签的宿主机。如没有带这种调度标签的宿主机、也可

  • 本文向大家介绍请简述一下Hibernate常见优化策略。相关面试题,主要包含被问及请简述一下Hibernate常见优化策略。时的应答技巧和注意事项,需要的朋友参考一下 考察点:Hibernate 参考回答: ①制定合理的缓存策略(二级缓存、查询缓存)。 ② 采用合理的Session管理机制。 ③ 尽量使用延迟加载特性。 ④ 设定合理的批处理参数。 ⑤ 如果可以,选用UUID作为主键生成器。 ⑥ 如

  • 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理。 说白了,就是看你对 dubbo 熟悉不熟悉: dubbo 工作原理:服务注册、注册中心、消费者、代理通信、负载均衡; 网络通信、序列化: