当前位置: 首页 > news >正文

JVM——配置常用参数,GC调优策略

文章目录

    • JVM 配置常用参数
      • Java内存区域常见配置参数概览
      • 堆参数
      • 回收器参数
      • 项目中常用配置
      • 常用组合
    • 常用 GC 调优策略
      • GC 调优原则
      • GC 调优目的
      • GC 调优策略

JVM 配置常用参数

  1. Java内存区域常见配置参数概览
  2. 堆参数;
  3. 回收器参数;
  4. 项目中常用配置;
  5. 常用组合;

Java内存区域常见配置参数概览

在这里插入图片描述

堆参数

![堆参数][1]

回收器参数

![垃圾回收器参数][2]

如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGC UseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:ParallelGCThreadsXX:CMSInitiatingOccupancyFraction 等。 通常:Young 区对象回收只可选择并行(耗时间),Old 区选择并发(耗 CPU)。

项目中常用配置

备注:在Java8中永久代的参数-XX:PermSize-XX:MaxPermSize已经失效。

在这里插入图片描述

常用组合

![垃圾回收器常用组合][4]

常用 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次。

相关文章:

JVM——配置常用参数,GC调优策略

文章目录 JVM 配置常用参数Java内存区域常见配置参数概览堆参数回收器参数项目中常用配置常用组合 常用 GC 调优策略GC 调优原则GC 调优目的GC 调优策略 JVM 配置常用参数 Java内存区域常见配置参数概览堆参数;回收器参数;项目中常用配置;常…...

使用IDEA把Java程序打包成jar

点击左上角File,选择Project Structure 左侧选中Artifacts,点击右侧的号 选择JAR->From modules with dependencies 选择你要运行的main方法所在的类,选好了点击OK Artifacts添加完成后点击右下角OK 在工具栏中找到Build,选择Build Artifacts 刚才创建好的Artifacts,选择Bui…...

元宇宙和数字孪生的异同探究

元宇宙和数字孪生,作为两个备受瞩目的概念,都在不同领域引起了巨大的关注。虽然它们都涉及数字化世界的构建,但元宇宙和数字孪生在概念、应用和影响方面存在一些异同点。 相似之处: 数字表示: 元宇宙和数字孪生都依赖…...

初识微服务

我们在曾经最常见的就是所谓的单体架构,但是由于网民越来越多,单体架构已经逐渐的被淘汰出去,所以我们在单体架构的基础上提出了微服务,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合&#xff0…...

数据库锁的分类 各种锁

锁的一个分类 数据库中的锁前言分享链接个人总结全局锁:表级锁行级锁: 数据库中的锁 前言 C支持并发有锁,Linux里面也有锁机制,数据库也有锁,什么互斥锁,表级锁,间隙锁,好多…&…...

MySQL数据库软件

MySQL数据库软件的详细知识介绍: 1. 存储引擎 MySQL支持多种存储引擎,如InnoDB、MyISAM等。不同引擎有各自的特点,InnoDB支持事务、行锁,MyISAM支持全文索引等。 2. 索引结构 MySQL索引主要有B树索引、哈希索引、全文索引等。这些索引通过不同的数据结构加速查找效率。 3. …...

无涯教程-PHP - preg_match_all()函数

preg_match_all() - 语法 int preg_match_all (string pattern, string string, array pattern_array [, int order]); preg_match_all()函数匹配字符串中所有出现的模式。 它将按照您使用可选输入参数order指定的顺序将这些匹配项放置在pattern_array数组中。有两种可能的类…...

Docker 练习2 安装MySQL

一、实验要求 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 2、安装搭建私有仓库 Harbor 3、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。具体要求如下: (1&#xff09…...

AndroidStudio 编译报错Unable to make field private final

用 AndroidStudio 打开某个工程后,编译报错如下 Execution failed for task :app:processDebugMainManifest. > Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to …...

linux 上安装es

首先 到官网 https://www.elastic.co/cn/downloads/elasticsearch 下载对应的安装包,我这里下载的是 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.1-linux-x86_64.tar.gz 然后讲该压缩包上传到 linux 的/usr/local 目录下执行 tar -z…...

自然语言处理从入门到应用——LangChain:索引(Indexes)-[文本分割器(Text Splitters)]

分类目录:《自然语言处理从入门到应用》总目录 当我们需要处理长文本时,有必要将文本分割成块。虽然这听起来很简单,但这里存在很多潜在的复杂性。理想情况下,我们希望将语义相关的文本块保持在一起,但什么是"语义…...

Chrome如何安装插件(文件夹)

1.下载的插件 说明:插件文件夹 2.打开扩展程序位置 3.点击已加载的扩展程序 说明:找到插件的位置 4.报错 说明:那还要进入文件里面。 5.插件的位置 说明:如果已经安装了插件,那么需要查看插件的位置。chrome输入 …...

MySql 环境搭建

目录 MySql 在 CentOS 7 环境下安装。 说明: 1.卸载不要的环境 2.配置 mysql 官方 yum 源 3.开始安装 4.启动 mysql 5.mysql 登录 6.配置 mysql 7. 设置开机启动 MySql 在 CentOS 7 环境下安装。 说明: 在安装与卸载中,用户切换成 r…...

mysql 表的约束

目录 mysql 表的约束 NULL/NOT NULL DEFAULT comment zerofill PRIMARY KRY 删除主键 添加主键 复合主键 AUTO_INCREMENT UNIQUE KEY FOREIGN KEY mysql 表的约束 约束是 mysql 为了保证数据正确的一种手段,而前面在谈数据类型的时候,数据类…...

认识Redis

1. 前置操作 以下内容基于CentOS 1.1. 安装 yum -y install redis 1.2. 启动 redis-server /etc/redis.conf & 1.3. 打开 redis-cli 1.4. 停止 redis-cli shutdown 1.5. 设置远程连接 修改 /etc/redis/redis.conf 修改 bind 127.0.0.1为 bind 0.0.0.0 1.6. 使用…...

同步、异步无障碍:Python异步装饰器指南

一、引言 Python异步开发已经非常流行了,一些主流的组件像MySQL、Redis、RabbitMQ等都提供了异步的客户端,再处理耗时的时候不会堵塞住主线程,不但可以提高并发能力,也能减少多线程带来的cpu上下文切换以及内存资源消耗。但在业务…...

CodeSite for .NET Crack

CodeSite for .NET Crack CodeSite for.NET与Visual Studio集成,通过实时查看器日志记录系统提供对代码执行的更深入了解,该系统有助于在本地或远程执行代码时快速查找问题。超越传统的断点调试,在应用程序继续运行时记录应用程序的执行&…...

基于IMX6ULLmini的linux裸机开发系列九:时钟控制模块

时钟控制模块 核心 4个层次配置芯片时钟 晶振时钟 PLL与PFD时钟 PLL选择时钟 根时钟/外设时钟 系统时钟来源 RTC时钟源:32.768KHz 系统时钟:24MHz,作为芯片的主晶振使用 PLL和PFD倍频时钟 7路锁相环电路(每个锁相环电路…...

【数据结构与算法】1. 绪论

1. 绪论 1.1 数据结构 1.1.1 数据结构的基本概念 1.1.2 数据结构的三要素 数据结构三要素: 逻辑结构 划分方法一: 线性结构:线性表、栈、队列、串非线性结构:树、图 划分方法二: 集合结构线性结构树形结构网状&…...

2023年京东儿童智能手表行业数据分析(京东销售数据分析)

儿童消费市场向来火爆,儿童智能手表作为能够实现定位导航,信息通讯,SOS求救,远程监听,智能防丢等多功能的智能可穿戴设备,能够通过较为精准的定位功能和安全防护能力保障儿童的安全,因而广受消费…...

如何在PC上完美运行PS3游戏:RPCS3模拟器终极指南

如何在PC上完美运行PS3游戏:RPCS3模拟器终极指南 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 你是否曾经想过在电脑上重温那些经典的PS3游戏?或者想要体验那些只能在PlayStation 3上玩…...

AI智能二维码工坊 vs 传统方案:OpenCV+QRCode性能对比评测

AI智能二维码工坊 vs 传统方案:OpenCVQRCode性能对比评测 二维码,这个黑白相间的小方块,早已渗透进我们生活的方方面面。从扫码支付到添加好友,从产品溯源到活动签到,它无处不在。作为开发者,我们经常需要…...

模型微调加持:百川2-13B+OpenClaw定制化个人助手实践

模型微调加持:百川2-13BOpenClaw定制化个人助手实践 1. 为什么需要定制化个人助手? 去年我尝试用现成大模型搭建自动化助手时,发现一个尴尬现象:当我让AI帮我整理会议纪要时,它总把技术术语解释得像科普读物&#xf…...

AIO PathProb 时序概率路径系统

本文由(拓世网络技术开发工作室)技术支持,欢迎共同开发第一部分:伪代码 / 算法描述(给算法/工程侧)1. 全局定义(状态与概率)import numpy as npfrom dataclasses import dataclass# …...

QtScrcpy完全指南:从多设备控制到游戏键位映射的全方位应用

QtScrcpy完全指南:从多设备控制到游戏键位映射的全方位应用 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtSc…...

解锁Dify工作流新潜能:四种并行模式实战解析

1. 为什么需要工作流并行化? 第一次用Dify构建工作流时,我就被它的可视化编排能力惊艳到了。但实际跑了几次发现,当处理复杂任务时,串行执行就像在高速公路上开拖拉机——明明有八车道却只开放一条。比如做新闻情感分析时&#xf…...

**发散创新:基于Go语言的服务网格实践与流量治理实战**在微服务架构日益复杂的今天,**服务网格(Service Mesh)**

发散创新:基于Go语言的服务网格实践与流量治理实战 在微服务架构日益复杂的今天,服务网格(Service Mesh) 已成为云原生生态中不可或缺的一环。它通过将网络通信逻辑从应用代码中剥离出来,实现了对服务间调用的精细化控…...

结合LSTM时序建模:深入理解SOONet处理视频连续性的机制

结合LSTM时序建模:深入理解SOONet处理视频连续性的机制 你有没有想过,为什么有时候看视频,AI能精准地知道“一个人从拿起杯子到喝水”这个完整动作的起止点?这背后,不仅仅是识别单张图片里的人在做什么,更…...

ModelScope与Hugging Face中文API调用全攻略:从安装到实战代码解析

ModelScope与Hugging Face中文API调用全攻略:从安装到实战代码解析 如果你正在寻找一个能够快速上手ModelScope和Hugging Face API的指南,特别是针对中文开发者的实用教程,那么你来对地方了。这两个平台作为当前最受欢迎的AI模型开源社区&…...

UE5材质贴图避坑指南:为什么你的金属材质看起来不对劲?

UE5金属材质表现不佳的7个关键原因与解决方案 当你在UE5中精心制作的金属材质始终缺乏真实感时,问题往往隐藏在贴图交互与参数设置的细节中。本文将解剖金属材质表现不佳的典型症状,并提供可直接落地的调试方法。 1. 金属材质表现不佳的典型症状诊断 金属…...