JVM 一些重要配置参数

1、内存配置参数

  • -Xmx<size>:设置Java堆的最大内存。如 -Xmx2g 将堆的最大大小设置为2G,推荐配置为系统可用内存的70-80%
  • -Xms<size>:设置Java堆的初始内存。如 -Xms2g 将堆的初始大小设置为2G,推荐配置与-Xmx的值相同,以避免堆内存动态调整的开销
  • -Xmn<size>:设置新生代大小。如 -Xmn256m将新生代的大小设置为256MB
  • -XX:NewRatio=<value>:设置新生代 / 老年代比率。如 -XX:NewRatio=2 表示新生代和老年代的比率为1:2
  • -XX:SurvivorRatio=<value>:设置Eden区与Survivor区的比率。如 -XX:SurvivorRatio=8表示Eden区和每个Survivor区的比率为8:1, 推荐配置为8或16,即Eden区占整个新生代的80%到94%

2、线程和堆栈配置参数

  • -Xss<size>:设置每个线程的堆栈大小。 如 -Xss1m 将每个线程的堆栈大小设置为1M ,等价于 -XX:ThreadStackSize=<value> 
  • -XX:ThreadMaxStackSize=<value>:用于设置线程的最大堆栈大小

3、垃圾回收配置参数

  • -XX:+UseSerialGC:使用串行垃圾收集器,年轻代、老年代为 Serial New、Serial Old , 适用于单线程环境或小型应用程序
  • -XX:+UseParallelGC:使用并行垃圾收集器,年轻代、老年代为 Parallel Scavenge 、Serial Old , 适用于多核处理器和大型应用程序
  • -XX:+UseConcMarkSweepGC:使用并发标记清除垃圾收集器 CMS,年轻代、老年代为 ParNew New、CMS (Serial Old作为老年代的备用),适用于对停顿时间敏感的应用程序。
  • -XX:+UseG1GC:使用G1垃圾收集器,年轻代、老年代均为 G1 ,适用于具有大内存容量和低停顿时间要求的应用程序。
  • -XX:MaxGCPauseMillis=<value>:设置垃圾回收的最大停顿目标时长(毫秒),如 -XX:MaxGCPauseMillis=500 表示希望垃圾回收的停顿时间不超过500毫秒,根据应用程序的需求,推荐配置为100到500毫秒
  • -XX:ParallelGCThreads=<value>:设置并行垃圾收集的线程数,推荐配置为CPU核心数的一半到全部
a、几种垃圾回收器的组合使用

新生代垃圾回收器:Serial、Parallel Scavenge 、Parallel New ,采用的都是标记 - 复制算法。其中 Serial 是单线程的,Parallel New 可以看成 Serial 的多线程版本。Parallel Scavenge 和 Parallel New 类似,但更加注重吞吐率。Parallel Scavenge 不能与 CMS 一起使用

老年代垃圾回收器:Serial Old 、Parallel Old、CMS。 Serial Old 和 Parallel Old 都是标记 - 压缩(或标记整理)算法。同样前者是单线程的,后者可以看成前者的多线程版本。CMS 采用的是标记 - 清除算法,且是并发的。除了少数几个操作需要 Stop-the-world 外,它可以在应用程序运行过程中进行垃圾回收(CMS垃圾回收失败,会启用 Serial Old 回收器,另外由于 G1 的出现,CMS 在 Java 9 中已被废弃

G1(Garbage First):横跨新生代和老年代的垃圾回收器。它打乱了前面所说的堆结构,直接将堆分成极其多个区域。每个区域都可以充当 Eden 区、Survivor 区、老年代中的一个。它采用的是标记 - 压缩算法,而且和 CMS 一样都能够在应用程序运行过程中并发地进行垃圾回收。G1 能够针对每个细分的区域来进行垃圾回收。在选择进行垃圾回收的区域时,它会优先回收死亡对象较多的区域。这也是 G1 名字的由来。

b、为什么 parallel scavenge 不能 CMS 配合使用?

主要因为它们之间存在一些不兼容的特性和冲突,可能导致性能下降或不可预测的结果。

目标不同:Parallel Scavenge 的目标是在减少垃圾收集停顿时间的同时,达到最大的吞吐量。它使用复制算法,将新生代分为Eden区和Survivor区,并通过多线程并行进行垃圾回收。而CMS收集器的目标是降低垃圾收集的停顿时间,提供更好的应用程序响应性。

工作方式冲突:Parallel Scavenge 在新生代使用并行垃圾回收方式,而CMS收集器在老年代使用并发标记-清除方式。这两种方式在内部的工作机制和线程调度上存在冲突,同时使用可能引发并发冲突和性能问题。

参数冲突:Parallel Scavenge 和 CMS收集器都有一系列的配置参数,用于调整它们的行为和性能。同时使用这两个收集器时,参数的配置可能会相互冲突,导致不一致的行为或性能问题。

4、类加载和字节码配置参数

  • -classpath 或 -cp:设置类路径。如 -cp /path/to/myapp.jar 设置类路径为 "/path/to/myapp.jar"
  • -XX:+TraceClassLoading:跟踪类加载过程。使用此参数可以打印出加载的类的信息
  • -XX:+TraceClassUnloading:跟踪类卸载过程。使用此参数可以打印出卸载的类的信息

5、调试和诊断配置参数

  • -verbose:gc:打印GC(垃圾回收)信息。使用此参数将在控制台上显示GC的详细信息,包括内存使用情况和垃圾回收的频率
  • -XX:+HeapDumpOnOutOfMemoryError:在内存溢出时生成堆转储文件。使用此参数可在发生内存溢出错误时自动生成堆转储文件,以便进行分析和调试
  • -XX:OnOutOfMemoryError="<command>":在内存溢出时执行指定的命令。使用此参数可以在内存溢出错误发生时执行自定义命令或脚本,如发送警报或记录日志
  • -Xloggc:<path> : 指定 gc 日志文件的输出路径

6、其他配置参数

  • -Dproperty=value:使用 -D 参数设置自定义系统属性。  如 -Dapp.config =/path/config.yml 将 config 系统属性设置为 "/path/config.yml"
  • -server:启用服务器模式。使用此参数可以在服务器环境中运行Java应用程序,以优化性能和吞吐量。

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

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

相关文章

华为云优惠券介绍、种类、领取入口及使用教程

华为云作为国内领先的云服务提供商&#xff0c;为了吸引用户&#xff0c;经常推出各种优惠活动&#xff0c;其中就包括华为云优惠券。通过领取和使用优惠券&#xff0c;可以降低用户上云成本&#xff0c;提升用户上云的使用体验。本文将详细介绍华为云的优惠券&#xff0c;包括…

Notepad++安装步骤

Notepad是一款文本编辑工具&#xff0c;支持27种编程语言&#xff0c;通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等&#xff0c;该软件拥有完整的中文化接口及支持多国语言编写的功能&#xff0c;不仅可以用来制作一般的纯文字说明文件&#xff0c;还非常适合编写计算机程序代码&a…

2024年,如何打造惊艳的个人博客/出版系统并且赚点小钱?

几年前&#xff0c;我就推荐过用Markdown写作静态博客。静态博客几乎是零托管成本&#xff0c;比较适合个人博客起步。Markdown便于本地搜索&#xff0c;也可当作是个人知识库方案。 现在有了新的进展。我不仅构建了一个视觉上相当不错的个人网站&#xff0c;还美化了github、…

Mybatis配置动态数据源以及参数传递等

Mybatis必知必会 一、Mybatis动态加载数据源 在配置数据源连接时,在企业的真实开发中数据源一般都会写在配置文件中&#xff0c;而不会直接写在mybatis的核心配置文件中 所以,Mybatis为了方便开发人员去动态的获取数据源连接制定了一些特定的标签用于加载这些数据源。 具体做法…

c语言题目之斐波那契数列

文章目录 题目一、什么叫斐波那契数列1&#xff0c;由来2&#xff0c;定义 二、代码编写总结 题目 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、什么叫斐波那契数列 1&#xff0c;由来 在数学历史上&#xff0c;欧洲黑暗时期过后&#xff0c;第…

web3d-three.js场景设计器-sprite广告牌

three.js使用Sprite精灵实现文字或者图片广告牌1.将文字绘制到Canvas&#xff0c;调整对应宽高。2.作为Cavans材质绑定到Sprite3.加载到场景调整适当的scale function createLabel({ text, fontSize, textColor, color, imageUrl }) { return new Promise((resolve, reject) &…

数据结构学习 jz66 构建乘积数组

关键词&#xff1a;数学 双指针 方法一&#xff1a;这个题目我一开始做不知道不能用除法。我做的&#xff1a;[ 用时: 12 m 12 s ] 用了除法 分类讨论 方法二&#xff1a;后来看了提示&#xff0c;双指针&#xff0c;两边各开始乘。 方法三&#xff1a;然后又看了答案可以节…

vue 使用mock模拟数据

vue 使用mock模拟数据 安装依赖 cnpm install axios --save cnpm install mockjs --save-dev cnpm install json5 --save-dev在根目录下&#xff0c;新建一个mock文件&#xff0c;且创建如下文件 utils.js index.js const Mock require(mockjs) const { param2Obj } …

基于selenium的pyse自动化测试框架

介绍&#xff1a; pyse基于selenium&#xff08;webdriver&#xff09;进行了简单的二次封装&#xff0c;比selenium所提供的方法操作更简洁。 特点&#xff1a; 默认使用CSS定位&#xff0c;同时支持多种定位方法&#xff08;id\name\class\link_text\xpath\css&#xff09…

【电脑技巧】Win11关闭自动更新

要想彻底关闭Windows电脑的自动更新&#xff0c;仅仅从系统设置里面选择暂停更新是完全不够用的&#xff0c;只有将windows自动更新的服务关闭掉&#xff0c;才能有效阻止其更新。 关闭win11电脑自动更新的办法&#xff0c;具体操作如下&#xff1a; 1.在winr运行框中输入servi…

vue3中,vue-echarts基本使用(柱状图、饼图、折线图)

注意&#xff1a;vue-echarts在使用前要先安装echarts&#xff0c;不要只安装vue-echarts这一个 echarts官网地址&#xff1a;Apache EChartsApache ECharts&#xff0c;一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xf…

几个Python小案例,爱上Python编程!

Python是一种面向对象的解释型编程语言&#xff0c;源代码与解释器CPython遵守GPL协议&#xff0c;Python语法简洁清晰。 语法简洁清晰&#xff0c;那么我们用少量的Python代码能做哪些有趣的东西&#xff1f;温馨提示&#xff1a;文末必看。 一、画爱心表白 1、图形都是由一…

微软Power Platform使用Canvas app画布应用添加自定义连接器调用外部API展示数据

微软Power Platform使用Power Apps的Canvas app画布应用添加自定义连接器&#xff0c;调用外部API展示数据 目录 微软Power Platform使用Power Apps的Canvas app画布应用添加自定义连接器&#xff0c;调用外部API展示数据1、在Power Apps中找到自定义连接器2、创建一个空白的自…

CentOS7中将MySQL注册为系统服务开机启动

实际生产环境中为了避免重启服务器后所有的服务都手动启动带来的麻烦&#xff0c;建议所有基础服务都设置为开机自动启动。本章节我们主要演示在Centos7中如何将MySQL注册为系统服务&#xff0c;并实现开机自动启动。 ① 手动启动mysql&#xff0c;查看进程信息&#xff0c;复制…

XTuner 微调 课程学习

大语言模型于海量的文本内容上&#xff0c;以无监督和半监督的方式进行训练的 模型微调的目的&#xff1a;使其在具体的使用场景或领域中输出更好的回答 增量预训练——给模型喂新的领域知识&#xff1b; 指令跟随或指令微调—— 基于海量的预训练数据训练出来的模型通常叫做…

SD-WAN解决跨国公司海外工厂网络安全问题

在跨境业务蓬勃发展的今天&#xff0c;越来越多的大型企业出于人力成本的考虑&#xff0c;在人力成本较低的发展中国家建立工厂。然而&#xff0c;传统基于路由器的网络架构已无法为这些跨国企业提供可靠的安全网络。那么&#xff0c;如何解决跨国企业海外工厂的网络难题呢&…

关于Python —— Python教程

开始 Python 是一个易于学习、使用和高效阅读的编程语言。它具有简洁的英文语法&#xff0c;编写更少的代码&#xff0c;让程序员专注于业务逻辑而不是语言本身。 本教程将从深度、专注细节上去理解 Python 这门语言。初学者可以参考此教程理解相应的内容&#xff0c;本教程将…

选中图层为什么不能建立3D模型---模大狮模型网

在Photoshop CC 2021(也就是PS6)中&#xff0c;要将选中的图层转换为3D模型&#xff0c;需要满足以下几个条件&#xff1a; 图层类型支持&#xff1a;只有特定类型的图层可以被转换为3D模型。通常&#xff0c;普通的像素图层、矢量图层和形状图层都可以进行转换。但是&#xff…

软件测试|Python数据可视化神器——pyecharts教程(十二)

使用pyecharts绘制关系网图 简介 关系网图是一种可视化工具&#xff0c;用于展示各个元素之间的关联关系。在数据分析和可视化中&#xff0c;关系网图通常用于展示网络、社交关系、知识图谱等方面的数据。Pyecharts 是一个功能强大的 Python 数据可视化库&#xff0c;可以轻松…