jdk8 G1收集器怎么手动调优

在 JDK 8 中,手动调优 G1 垃圾收集器可以通过以下步骤和参数进行:

1. 启用 G1 垃圾收集器

要启用 G1 垃圾收集器,需要在 JVM 启动参数中添加以下选项:

-XX:+UseG1GC

这个参数告诉 JVM 使用 G1 作为垃圾收集器。

2. 设置堆内存大小

合理设置堆内存的初始大小和最大大小,可以使用以下参数:

-Xms4g -Xmx4g

这将设置初始堆大小和最大堆大小均为 4GB。

3. 设置最大 GC 暂停时间

G1 收集器的一个重要特点是低暂停时间,可以通过以下参数设置期望的最大 GC 暂停时间:

-XX:MaxGCPauseMillis=200

这个参数设置 G1 收集器在进行垃圾回收时,尽量将暂停时间控制在 200 毫秒以内。

4. 设置堆使用率阈值

G1 收集器会在堆使用率达到一定阈值时开始垃圾回收,可以通过以下参数设置这个阈值:

-XX:InitiatingHeapOccupancyPercent=45

这个参数表示当堆使用率达到 45% 时,G1 收集器会开始并发标记周期。

5. 设置 Region 大小

G1 收集器将堆内存划分为多个 Region,可以通过以下参数设置每个 Region 的大小:

-XX:G1HeapRegionSize=32m

这个参数设置每个 Region 的大小为 32MB。

6. 设置并发标记线程数

G1 收集器在并发标记阶段使用的线程数可以通过以下参数设置:

-XX:ConcGCThreads=4

这个参数设置并发标记线程数为 4。

7. 设置并行回收线程数

G1 收集器在并行回收阶段使用的线程数可以通过以下参数设置:

-XX:ParallelGCThreads=8

这个参数设置并行回收线程数为 8。

8. 其他常用参数

  • 禁用显式 GC 调用:可以通过以下参数禁用 System.gc() 的显式调用,避免可能的性能问题:

    -XX:+DisableExplicitGC
  • 启用字符串去重:可以通过以下参数启用 JVM 的字符串去重功能,减少堆内存的占用:

    -XX:+UseStringDeduplication

示例配置

以下是一个完整的示例配置,适用于一个具有 8 核心和 32GB 内存的机器:

java -XX:+UseG1GC -Xms16g -Xmx16g -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:G1HeapRegionSize=32m -XX:ConcGCThreads=4 -XX:ParallelGCThreads=8 -XX:+UseStringDeduplication -XX:+DisableExplicitGC -jar your-application.jar

监控和调优

  • 使用监控工具:可以使用 jstatjmapjconsole 等工具监控 G1 收集器的性能。

  • 分析 GC 日志:可以通过以下参数启用 GC 日志记录,并分析日志以发现性能瓶颈:

    -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/yourapp-gc.log

通过以上步骤和参数,可以在 JDK 8 中手动调优 G1 垃圾收集器,以满足应用的性能需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx通过设置自定义标记识别代理调用

Nginx通过设置自定义标记识别代理调用 业务场景 最近遇到一个业务场景,部署在云端服务器的一个平台,接口提供给多个现场调用,其中一个现场是通过nginx代理服务器代理转发到云服务器,另外一个现场则是直接通过云服务器接口进行调…

【DeepSeek系列】01 DeepSeek-V1 快速入门

1、DeepSeek简介 2024年底,DeepSeek 相继推出了其第一代推理大模型:DeepSeek-R1-Zero 和 DeepSeek-R1。 DeepSeek-R1-Zero 是一个通过大规模强化学习(RL)训练的模型,训练过程中没有使用监督微调(SFT&…

基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决

在使用 LabVIEW 通过 Modbus-RTU 协议与工业设备进行通信时,可能遇到无法正常发送或接收指令的问题。常见原因包括协议参数配置错误、硬件连接问题、数据帧格式不正确等。本文以某 RGBW 控制器调光失败为例,提出了一种通用的排查思路,帮助开发…

密云生活的初体验

【】在《岁末随笔之碎碎念》里,我通告了自己搬新家的事情。乙巳年开始,我慢慢与大家分享自己买房装修以及在新家的居住体验等情况。 跳过买房装修的内容,今天先说说这三个月的生活体验。 【白河】 潮白河是海河水系五大河之一,贯穿…

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

openwebui入门

1 简介 ‌Open WebUI‌(网址是openwebui.com)是一个高度可扩展、功能强大且用户友好的自托管Web用户界面,专为完全离线操作设计,编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…

Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等

文章目录 本次课程内容第四章 数组、广义表和串第一节 数组及广义表数组的基本操作数组的顺序存储方式-借用矩阵行列式概念二维数组C语言对应的函数-通常行主序方式 矩阵的压缩存储对称矩阵和三角矩阵压缩存储后,采用不同的映射函数稀疏矩阵-可以构成三元组线性表三…

3-Not_only_base/2018网鼎杯

3-Not_only_base 打开code MCJIJSGKPZZYXZXRMUW3YZG3ZZG3HQHCUS 分析: 首先看题知道解密过程中肯定有base解密。 知识点1: Base64字符集: 包含大小写字母(A-Z、a-z)、数字(0-9)以及两个特殊字…

deepseek、qwen等多种模型本地化部署

想要在本地部署deepseek、qwen等模型其实很简单,快跟着小编一起部署吧 1 环境搭建 1.1下载安装环境 首先我们需要搭建一个环境ollama,下载地址如下 :Ollama 点击Download 根据自己电脑的系统选择对应版本下载即可 1.2 安装环境(window为例) 可以直接点击安装包进行安…

02/06 软件设计模式

目录 一.创建型模式 抽象工厂 Abstract Factory 构建器 Builder 工厂方法 Factory Method 原型 Prototype 单例模式 Singleton 二.结构型模式 适配器模式 Adapter 桥接模式 Bridge 组合模式 Composite 装饰者模式 Decorator 外观模式 Facade 享元模式 Flyw…

Idea ⽆ Maven 选项

Idea ⽆ Maven 选项 1. 在 Idea 项⽬上右键2. 选中 Maven 选项 如果在创建 Spring/Spring Boot 项⽬时,Idea 右侧没有 Maven 选项,如下图所示: 此时可以使⽤以下⽅式解决。 1. 在 Idea 项⽬上右键 2. 选中 Maven 选项 选中 Maven 之后&#…

用Deepseek做EXCLE文件对比

背景是我想对比两个PO系统里的一个消息映射,EDI接口的mapping有多复杂懂的都懂,它还不支持跨系统版本对比,所以我费半天劲装NWDS,导出MM到excle,然后问题来了,我需要对比两个excel文件里的内容,…

OpenCV:图像轮廓

目录 简述 1. 什么是图像轮廓? 2. 查找图像轮廓 2.1 接口定义 2.2 参数说明 2.3 代码示例 2.4 运行结果 3. 绘制图像轮廓 3.1 接口定义 3.2 参数说明 3.3 代码示例 3.4 运行结果 4. 计算轮廓周长 5. 计算轮廓面积 6. 示例:计算图像轮廓的面…

在Mac mini M4上部署DeepSeek R1本地大模型

在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…

CVPR | CNN融合注意力机制,芜湖起飞!

**标题:**On the Integration of Self-Attention and Convolution **论文链接:**https://arxiv.org/pdf/2111.14556 **代码链接:**https://github.com/LeapLabTHU/ACmix 创新点 1. 揭示卷积和自注意力的内在联系 文章通过重新分解卷积和自…

LOCAL_PREBUILT_JNI_LIBS使用说明

LOCAL_PREBUILT_JNI_LIBS使用说明 使用LOCAL_PREBUILT_JNI_LIBS,可用于控制APK集成时,其相关so的集成方式。 比如,用于将APK中的so,抽取出来。 LOCAL_PREBUILT_JNI_LIBS : \lib/arm64-v8a/libNativeCore.so \lib/arm64-v8a/liba…

Java中的object类

1.Object类是什么? 🟪Object 是 Java 类库中的一个特殊类,也是所有类的父类(超类),位于类继承层次结构的顶端。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。 🟦Java里面除了Object类,所有的…

uniapp小程序自定义中间凸起样式底部tabbar

我自己写的自定义的tabbar效果图 废话少说咱们直接上代码,一步一步来 第一步: 找到根目录下的 pages.json 文件,在 tabBar 中把 custom 设置为 true,默认值是 false。list 中设置自定义的相关信息, pagePath&#x…

四、GPIO中断实现按键功能

4.1 GPIO简介 输入输出(I/O)是一个非常重要的概念。I/O泛指所有类型的输入输出端口,包括单向的端口如逻辑门电路的输入输出管脚和双向的GPIO端口。而GPIO(General-Purpose Input/Output)则是一个常见的术语&#xff0c…

【Elasticsearch】post_filter

post_filter是 Elasticsearch 中的一种后置过滤机制,用于在查询执行完成后对结果进行过滤。以下是关于post_filter的详细介绍: 工作原理 • 查询后过滤:post_filter在查询执行完毕后对返回的文档集进行过滤。这意味着所有与查询匹配的文档都…