首页 > 其他分享 >jvm 调优参数

jvm 调优参数

时间:2023-04-14 17:02:54浏览次数:38  
标签:线程 新生代 XX 调优 GC 内存 jvm 参数 CMS

jvm 参数

参数 作用 建议
-Xms 堆内存最小值 与 Xmx 相等,避免每次空间不足,动态扩容带来的影响
-Xmx 堆内存最大值 与 Xms 相等,避免每次空间不足,动态扩容带来的影响
-Xmn 新生代大小 过小会增加Minor GC频率,过大会减小老年代的大小。一般设为整个堆空间的1/4或1/3.
-Xss 每个线程池的堆栈大小 在jdk5以上的版本,每个线程堆栈大小为1m,jdk5以前的版本是每个线程池大小为256k。
一般在相同物理内存下,如果减少-xss值会产生更大的线程数,但不同的操作系统对进程内线程数是有限制的,是不能无限生成
-XX:NewRatio 新生代与老年代比值 -XX:NewRatio=4 表示新生代与老年代所占比例为1:4 ,新生代占比整个堆的五分之一。
如果设置了-Xmn的情况下,该参数是不需要在设置的
-XX:PermSize 非堆区初始值 默认是物理内存的六十四分之一
-XX:MaxPermSize 非堆区最大值 默认是物理内存的四分之一,一般来说,MaxPermSize设为64MB可以满足绝大多数的应用了。
若依然出现方法区溢出,则可以设为128MB。若128MB还不能满足需求,那么就应该考虑程序优化了
-XX:MaxTenuringThreshold 新生代中对象存活次数,默认15
-XX:SurvivorRatio Eden区与Subrvivor区大小的比值 如果设置为8,两个Subrvivor区与一个Eden区的比值为2:8,一个Survivor区占整个新生代的十分之一
-XX:+UseFastAccessorMethods 原始类型快速优化
-XX:+AggressiveOpts 编译速度加快
-XX:PretenureSizeThreshold 对象超过多大值时直接在老年代中分配

垃圾收集器参数

参数 作用
-XX:+UseSerialGC 串行垃圾回收,现在基本很少使用。
-XX:+UseParNewGC 新生代使用并行,老年代使用串行
-XX:+UseConcMarkSweepGC 新生代使用并行,老年代使用CMS(一般都是使用这种方式),CMS是Concurrent Mark Sweep的缩写,并发标记清除,一看就是老年代的算法,所以,它可以作为老年代的垃圾回收器。CMS不是独占式的,它关注停顿时间
-XX:ParallelGCThreads 指定并行的垃圾回收线程的数量,最好等于CPU数量
-XX:+DisableExplicitGC 禁用System.gc(),因为它会触发Full GC,这是很浪费性能的,JVM会在需要GC的时候自己触发GC
-XX:CMSFullGCsBeforeCompaction 在多少次GC后进行内存压缩,这个是因为并行收集器不对内存空间进行压缩的,所以运行一段时间后会产生很多碎片,使得运行效率降低
-XX:+CMSParallelRemarkEnabled 降低标记停顿
-XX:+UseCMSCompactAtFullCollection 在每一次Full GC时对老年代区域碎片整理,因为CMS是不会移动内存的,因此会非常容易出现碎片导致内存不够用的
-XX:+UseCmsInitiatingOccupancyOnly 使用手动触发或者自定义触发cms 收集,同时也会禁止hostspot 自行触发CMS GC
-XX:CMSInitiatingOccupancyFraction 使用CMS作为垃圾回收,使用70%后开始CMS收集
-XX:CMSInitiatingPermOccupancyFraction 设置perm gen使用达到多少%比时触发垃圾回收,默认是92%
-XX:+CMSIncrementalMode 设置为增量模式
-XX:+CmsClassUnloadingEnabled CMS是不会默认对永久代进行垃圾回收的,设置此参数则是开启
-XX:+PrintGCDetails 开启详细GC日志模式,日志的格式是和所使用的算法有关
-XX:+PrintGCDateStamps 将时间和日期也加入到GC日志中

标签:线程,新生代,XX,调优,GC,内存,jvm,参数,CMS
From: https://www.cnblogs.com/hangychn/p/17318836.html

相关文章

  • Spring自定义参数解析器设计
    作者:京东零售 王鹏超1.什么是参数解析器@RequstBody、@RequstParam这些注解是不是很熟悉?我们在开发Controller接口时经常会用到此类参数注解,那这些注解的作用是什么?我们真的了解吗?简单来说,这些注解就是帮我们将前端传递的参数直接解析成直接可以在代码逻辑中使用的javaBean,......
  • PHP cli模式执行脚本 -- 通过getopt()接收参数
    学习记录留作参考祝君好运用于执行Linux定时任务的PHP文件,通过接收不同参数实现不同功能。使用cli模式执行一些操作PHP用于定时任务的代码使用getopt()获取命令行参数short_options注意:使用:使用cli模式执行一些操作PHP官方文档:执行PHP文件#可以使用下面两个......
  • 关键的Java JVM选项和参数
    1.关键的JavaJVM选项和参数让我们来看看在Java环境中可以配置的21个最重要的JVM选项和参数。-Xms:将设置JVM的初始堆大小。-Xmx:将设置JVM的最大堆大小。-Xss:将设置每个线程的内部使用的线程堆栈的大小。-XX:+UseCompressedOops:启用使用压缩对象指针以减少内存使用的功能。-......
  • ROS学习笔记(三)- 参数服务器
    以下是GPT对此的介绍:ROS的参数服务器是一种全局的、名称空间分层的键值存储系统,用于在ROS系统中存储和共享参数数据。它允许ROS节点在运行时获取和设置参数,而不需要在代码中硬编码参数。参数服务器提供了许多优点,例如:可以在ROS系统中共享参数数据,使得多个节点可以访问同一组参......
  • jvm常见的分析工具
    一、命令jmap内存分析:1、jps   #查到服务的进程2、jmap -histo 进程号  #查看历史生产的实例2.1、 jmap - histo pid | head -20  查看前20 个3、jmap -histo:live 进程号  #查看当前存活的实例,执行过程中可能会触发一次full gc4、jmap -histo:live......
  • C++的引用变量作为函数参数
    一、问题引入在C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。引用传递:引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。通过引用变量用作参数,函数将使用原始数据,而不是其副本。二、解决过程举......
  • Chrome - 修改请求参数后重放请求
    接口根据请求参数不同,返回不同的响应值。在charles中可以使用断点的方式,那么在谷歌浏览器的控制台中怎么实现呢?右键请求-Copy-Copyasfetch切换到控制台tab,粘贴修改参数后,按下回车返回networktab即可查看到重放请求Copyasfetch是指在Chrome浏览器的开发者......
  • jvm 内存结构
    jvm内存结构和java内存模型不是同一个东西线程私有线程共享程序计数器堆虚拟机栈方法区本地方法区堆外内存(Java7的永久代或JDK8的元空间、代码缓存)程序计数器也叫PC寄存器,存储下一条程序行号(严格是机器码行号),比如分支、循环、线程切换之后的唤醒等......
  • Java_JVM的内存溢出异常
     JVM的内存溢出异常在Java虚拟机规范的描述中,除了PC(程序计数器)寄存器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。当发生OutOfMemoryError异常时,无法用try...catch捕捉。 在开始讲解之前,在这里先简单介绍下虚拟机启动相关的一些内存设置参数。因为Ou......
  • jvm 类加载
    将字节码文件加载到jvm,并创建对应的字节码对象,然后对其进行验证、初始化等操作共5个阶段:加载、验证、准备、解析、初始化,这里只记录【加载】里的类加载器和双亲委派加载的是字节码文件通过类加载器ClassLoader把字节码文件在堆中生成代表这个class文件的java.lang.Clas......