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应用程序,以优化性能和吞吐量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式-05】Facade门面Mediator调停者 | Decorator装饰器 | Chain Of Responsibility责任链

Facade门面Mediator调停者 1、Facade门面图解 2、Mediator调停者 一般是系统内部相互交错&#xff0c;比如消息中间件(MQ)就是这种设计模式&#xff0c;对各个功能或系统之间进行解耦。 Decorator装饰器 1、问题 2、解决方案 Chain Of Responsibility责任链 一、例子场景 业…

循环冗余校验(Cyclic Redundancy Check, CRC)计算

若信息码字为111000110&#xff0c;生成多项式G(x)x^5x^3x1&#xff0c;则计算出的CRC校验码为&#xff08; &#xff09;。 A.01101 B.11001 C.001101 D.011001 循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的…

牛客周赛 Round 3 解题报告 | 珂学家 | 贪心思维场

前言 寒之不寒无水也&#xff0c;热之不热无火也。 整体评价 感觉比较简单&#xff0c;更加侧重于思维吧。和前几场的Round系列&#xff0c;风格不太一样。 A. 游游的7的倍数 因为连续7个数&#xff0c;比如有一个数是7的倍数 因此从个位数中着手添加&#xff0c;是最好的选…

软件测试|如何使用Selenium处理隐藏元素

简介 我们在使用selenium进行web自动化测试时&#xff0c;有时候会遇到元素被隐藏&#xff0c;从而无法对元素进行操作&#xff0c;导致我们的用例报错的情况。当我们遇到元素被隐藏的情况时&#xff0c;需要先对隐藏的元素进行处理&#xff0c;才能继续进行我们的操作&#x…

Spirng MVC见解1

1. SpringMVC概述 1.1 MVC介绍 MVC是一种设计模式&#xff0c;将软件按照模型、视图、控制器来划分&#xff1a; M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为数据承载Bean&#x…

xlua源码分析(五) struct类型优化

xlua源码分析&#xff08;五&#xff09; struct类型优化 上一节我们分析了xlua是如何实现lua层访问C#值类型的&#xff0c;其中我们重点提到了xlua默认实现方式下&#xff0c;struct访问的效率问题。实际上&#xff0c;xlua还提供了两种优化的方式&#xff0c;可以大大提高str…

代码随想录算法训练营Day21| 93.复原IP地址、78.子集、90.子集||

LeetCode 93 复原 IP 地址 本题思路&#xff1a;最重要的是想到一个收集结果的条件&#xff0c;也就是终止条件。 当 . 的个数达到三个时候&#xff0c;并且&#xff0c;判断最后剩余的是否符合要求&#xff0c;如果符合&#xff0c;说明整个ip地址可以&#xff0c;就加入到结…

二分图带权最大匹配-KM算法详解

文章目录 零、前言一、红娘再牵线二、二分图带权最大完备匹配2.1二分图带权最大匹配2.2概念2.3KM算法2.3.1交错树2.3.2顶标2.3.3相等子图2.3.4算法原理2.3.5算法实现 三、OJ练习3.1奔小康赚大钱3.2Ants 零、前言 关于二分图&#xff1a;二分图及染色法判定-CSDN博客 关于二分…

Java线上问题堆栈排查分析

最近线上出现类似内存溢出问题&#xff0c;需要排查具体原因&#xff0c;记录过程&#xff0c;方便备查。 一、数据抓取 在启动参数中添加参数&#xff0c;可参照以下设置。 参数的作用是在程序发生内存溢出 OutOfMemory 时打印日志&#xff0c;dump下来&#xff0c;方便用工…

xshell:关于ssh用户身份验证不能选择password的解决方法

接下来我将告诉大家如何进行修改让其能够进行密码登录 我使用的软件是VM VirtualBox管理器 进行用户名密码登录后 输入 cd /etc/ 切换到etc目录下 cd /etc/ 切换到etc目录后输入ls ls 切换到ssh目录下 cd ssh 进入文件 sshd_config vi sshd_config 找到指定部分进行修改 如何…

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

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

操作系统--内存管理

一、虚拟内存的提出 单片机 没有操作系统只能运行一个程序每次都要借助工具把代码烧录进去&#xff08;后面的程序会把之前的覆盖&#xff09; 单片机的 CPU 是直接操作内存的「物理地址」 现在的问题是 有操作系统需要同时运行多个程序&#xff08;把进程所使用的地址「隔离」…

车载以太网——DDS篇

摘要&#xff1a; DDS为信息交换和应用程序集成创建了一个简单而强大的体系结构。 01、什么是DDS DDS是一系列标准&#xff0c;它指定了分布式应用程序可用于交换实时数据的API、协议和安全机制。应用程序所使用的软件应用程序编程接口&#xff08;API&#xff09;是基于一个…

“超人练习法”系列09:耶克斯–多德森定律

01 你现有水平和学习风格 搞明白自己是个大事&#xff0c;搞不明白就糊涂一辈子。 首先&#xff0c;要弄清楚自己现在是个啥水平&#xff0c;有啥技能可以拿出来的&#xff0c;然后再定个目标&#xff0c;知道自己想往哪方面努力。 你擅长的学习方式是啥呢&#xff1f;是那种…

架构的未来:微前端与微服务的融合

目录 前言 微服务架构简介 微前端架构简介 微前端与微服务的融合 1. 共享服务 2. 基于事件的通信 3. 统一的身份和认证 4. 交付管道的集成 示例&#xff1a;使用微服务和微前端的电子商务平台 微服务架构 微前端架构 融合微服务和微前端 总结 作者简介…

智慧康养项目:智能技术与产品提升老年人生活品质

智慧康养项目需要集成的一些独特的技术和产品&#xff0c;其中包括&#xff1a; 智能健康监测设备&#xff1a;我们开发了一款能够实时监测老年人身体状况的智能健康监测设备&#xff0c;包括血压、血糖、心率等指标。该设备通过数据分析处理&#xff0c;能够提供个性化的健康…

【微信小程序独立开发 3】个人资料页面编写

这一节完成用户个人信息昵称的填写和获取 上节编写完成后的页面如下所示&#xff1a; 首先进行用户昵称编辑功能的编写&#xff0c;铲屎官昵称采用了navigator标签&#xff0c;当点击昵称时会自动跳转到昵称编辑页面。 首先输入昵称编辑界面的导航栏名称 {"usingCompone…

On the Robustness of Backdoor-based Watermarkingin Deep Neural Networks

关于深度神经网络中基于后门的数字水印的鲁棒性 ABSTRACT 在过去的几年中&#xff0c;数字水印算法已被引入&#xff0c;用于保护深度学习模型免受未经授权的重新分发。我们调查了最新深度神经网络水印方案的鲁棒性和可靠性。我们专注于基于后门的水印技术&#xff0c;并提出了…

CHS_04.2.1.5+进程通信

CHS_04.2.1.5进程通信 进程通信为什么进程通信需要操作系统支持&#xff1f;共享存储消息传递消息传递&#xff08;间接通信方式&#xff09;进程通信——管道通信 知识回顾与重要考点 进程通信 在这个小节中 我们会学习进程间通信的几种方式 分别是共享 存储 消息传递 还要管道…

软件测试|Selenium 元素不可交互异常ElementNotInteractableException问题分析与解决

简介 在使用 Selenium 进行 Web 自动化测试时&#xff0c;我们可能会遇到各种异常情况。其中之一就是 ElementNotInteractableException 异常&#xff0c;这通常意味着在尝试与页面元素交互时出现了问题。本文将详细介绍这个异常的原因、可能的解决方法&#xff0c;并提供示例…