gc调优我们到底在调整什么

前锋JAVA发展学院我想昨天分享

Java开发通常涉及jvm调优,其中gc调优是关键项。 gc调整的调整究竟是什么?这是准确的业务。以下是关于这个主题的

原因

为什么业务必须从cc ++开始?如果说使用c/c ++开发和操作的效果相对稳定。毕竟,没有像gc那样的问题,并且gc没有引起暂停。但是c/c ++开发比java要慢,尤其是跨平台程序需要不断地在宏定义系统之间做差异。包括开源库和整个框架都比java少。 java的框架特别好。如果您面临着相对有形的业务,那么Java框架的基本应用程序将不会自行完成。因此,java开发效率带来了极大的便利。

java的缺点是他的垃圾收集。 Java没有释放内存的删除操作。这是一个问题,不需要太多担心内存泄漏。他的结局计划是一个垃圾收集器。将导致短暂停顿然后jvm做对象回收。

商业

虽然存在上述问题,但业务场景确实多种多样。这是我们根据业务场景必须做的事情。业务场景可分为以下几种类型

任务类型

交互式

任务类型

任务类型主要是执行一段代码,一旦执行就不需要过多的交互。例如,计算一个月的数据等。大多数性能都是计算出来的。结果是你想要用完结果并对应于java中的部分。吞吐量是服务执行时间/gc时间+业务执行时间。

任务类型情况并行gc基本上是唯一的选择我们只需要注意-XX: GCTimeRatio这个参数可以是公式1/1 + N默认是99意味着吞吐量gc只需要1%的时间剩下99%是业务执行。

交互式

一般的互动形式是我们的网站需要参与。在这种情况下,响应速度更重要。 gc是5秒,所以jvm暂停5秒,这显然是不可接受的。

通常优选的cms。 cms的优点是旧皮带可以多步循环使用,只有初始标记,重新标记是stw。其余的步骤不会导致jvm服务停止,因为gc线程和业务线程并行运行,并且不会像没有gc那样好。

cms的问题在于浮动垃圾最终会采取单线程回收的情况。

G1相对缓解了cms浮动垃圾的问题。他通过该区域管理堆对象的分配,并且可以定期管理。 G1还有fullgc的问题。它也需要合理避免。

特例

以上描述了大多数场景的选择,但具体需要根据自己的场景进行测试,例如,虽然它是交互式的,但物理机器堆的物理资源很多,那么并行gc并不一定在这种情况下执行比cms差,虽然他在整体暂停时gc,但是堆小gc线程。 qps比cms好。

观察方式

已经出现了gc的初始选择,然后我们需要调整特定的匹配gc参数。此时,观察者需要查看调整后的参数是否有效。有很多方法可供选择。普罗米修斯的提议主要是他是开源的,易于构建。参考指标可以由grafana播放。通过查看图表等,我们可以更直观地了解参数调整的状态。无需通过日志查看图像。日志中的详细信息很多,但与时间线的比较实际上并不直观。

总结

Gc调优需要分析业务资源以选择几个垃圾收集器的组合,然后通过像prometheus这样的监控来比较gc参数和支持参数中的详细效果。

收集报告投诉

Java开发通常涉及jvm调优,其中gc调优是关键项。 gc调整的调整究竟是什么?这是准确的业务。以下是关于这个主题的

原因

为什么业务必须从cc ++开始?如果说使用c/c ++开发和操作的效果相对稳定。毕竟,没有像gc那样的问题,并且gc没有引起暂停。但是c/c ++开发比java要慢,尤其是跨平台程序需要不断地在宏定义系统之间做差异。包括开源库和整个框架都比java少。 java的框架特别好。如果您面临着相对有形的业务,那么Java框架的基本应用程序将不会自行完成。因此,java开发效率带来了极大的便利。

java的缺点是他的垃圾收集。 Java没有释放内存的删除操作。这是一个问题,不需要太多担心内存泄漏。他的结局计划是一个垃圾收集器。将导致短暂停顿然后jvm做对象回收。

商业

虽然存在上述问题,但业务场景确实多种多样。这是我们根据业务场景必须做的事情。业务场景可分为以下几种类型

任务类型

交互式

任务类型

任务类型主要是执行一段代码,一旦执行就不需要过多的交互。例如,计算一个月的数据等。大多数性能都是计算出来的。结果是你想要用完结果并对应于java中的部分。吞吐量是服务执行时间/gc时间+业务执行时间。

任务类型情况并行gc基本上是唯一的选择我们只需要注意-XX: GCTimeRatio这个参数可以是公式1/1 + N默认是99意味着吞吐量gc只需要1%的时间剩下99%是业务执行。

交互式

一般的互动形式是我们的网站需要参与。在这种情况下,响应速度更重要。 gc是5秒,所以jvm暂停5秒,这显然是不可接受的。

通常优选的cms。 cms的优点是旧皮带可以多步循环使用,只有初始标记,重新标记是stw。其余的步骤不会导致jvm服务停止,因为gc线程和业务线程并行运行,并且不会像没有gc那样好。

cms的问题在于浮动垃圾最终会采取单线程回收的情况。

G1相对缓解了cms浮动垃圾的问题。他通过该区域管理堆对象的分配,并且可以定期管理。 G1还有fullgc的问题。它也需要合理避免。

特例

以上描述了大多数场景的选择,但具体需要根据自己的场景进行测试,例如,虽然它是交互式的,但物理机器堆的物理资源很多,那么并行gc并不一定在这种情况下执行比cms差,虽然他在整体暂停时gc,但是堆小gc线程。 qps比cms好。

观察方式

已经出现了gc的初始选择,然后我们需要调整特定的匹配gc参数。此时,观察者需要查看调整后的参数是否有效。有很多方法可供选择。普罗米修斯的提议主要是他是开源的,易于构建。参考指标可以由grafana播放。通过查看图表等,我们可以更直观地了解参数调整的状态。无需通过日志查看图像。日志中的详细信息很多,但与时间线的比较实际上并不直观。

总结

Gc调优需要分析业务资源以选择几个垃圾收集器的组合,然后通过像prometheus这样的监控来比较gc参数和支持参数中的详细效果。