精华内容
下载资源
问答
  • jvm参数配置
    千次阅读
    2021-06-27 16:47:05

    示例配置

    -server
    -Xmx4g
    -Xms4g
    -Xss256k
    -XX:MaxDirectMemorySize=256m

    heap ByteBuffer -> -XX:Xmx -> 一种是heap ByteBuffer,该类对象分配在JVM的堆内存里面,直接由Java虚拟机负责垃圾回收。

    direct ByteBuffer -> -XX:MaxDirectMemorySize -> 一种是direct ByteBuffer是通过jni在虚拟机外内存中分配的。通过jmap无法查看该快内存的使用情况。只能通过top来看它的内存使用情况。

    -XX:+UseG1GC
    -XX:+UseCompressedOops

    new一个空对象在32为系统中占用内存大小是8byte(对象头,在堆中)+4byte(对象的引用地址,在栈中)=12byte;

    new一个空对象在64为系统中占用内存大小是16byte(对象头,在堆中)+8byte(对象的引用地址,在栈中)=24byte;

    可想而知同一个对象在64位系统中占的内存加大一半了,不仅消耗运行内存,而且GC回收时挺耗cpu的。

    jvm的属性-XX:+UseCompressedOops在JDK 1.6和之后的版本都默认开启了,所以jvm开启了压缩之后64为系统的对象也只占用12byte。

    -XX:+UseCompressedClassPointers

    由于UseCompressedClassPointers的开启是依赖于UseCompressedOops的开启,因此,要使UseCompressedClassPointers起作用,得先开启UseCompressedOops,并且开启UseCompressedOops 也默认强制开启UseCompressedClassPointers,关闭UseCompressedOops 默认关闭UseCompressedClassPointers。

    如果开启类指针压缩,+UseCompressedClassPointers,根据上面的条件,结果跟只开启UseCompressedOops一样,会在内存中消耗20个字节,o指针占4个字节,Object对象占16个字节。

    -XX:+SegmentedCodeCache

    通过 SegmentedCodeCache参数可以选择按照整体初始化,还是分段初始化。

    通过 -XX:ReservedCodeCacheSize参数可以指定Code Cache的初始化大小,这个默认值在不同的JDK版本也不同,目前我这边调试的是OpenJDK11,默认大小是240M,这个已经够用了。

    -verbose:gc

    包含在-XX:+PrintGCDetails中,用于打印GC详情

    -XX:+PrintCommandLineFlags

    打印JVM所有参数

    -XX:+ExplicitGCInvokesConcurrent

    这个参数会在system.gc()的时候使用CMS垃圾回收器,降低gc耗时

    -Djava.security.egd=file:/dev/./urandom

    SecureRandom在java各种组件中使用广泛,可以可靠的产生随机数。但在大量产生随机数的场景下,性能会较低。这时可以使用"-Djava.security.egd=file:/dev/./urandom"加快随机数产生过程。

    參考鏈接:

    https://blog.51cto.com/leo01/1795447

    -Xlog:gc*,safepoint:/data/log/${SERVICE_NAME}/gc.log:time,uptime:filecount=100,filesize=50M
    更多相关内容
  • JVM 参数配置详细介绍

    2020-08-31 10:21:03
    主要介绍了JVM 参数配置详细介绍的相关资料,需要的朋友可以参考下
  • jvm参数配置

    2021-11-17 16:32:04
    jvm参数配置: 首先要了解可以配置些什么参数!!! 1、垃圾收集器 什么是垃圾收集器? 垃圾收集器是垃圾回收算法(引用计数法、标记清楚法、标记整理法、复制算法)的具体实现,不同垃圾收集器、不同版本的JVM所...

    参考:https://blog.csdn.net/weixin_43122090/article/details/105093777

    jvm参数配置:
    首先要了解可以配置些什么参数!!!
    1、垃圾收集器
    什么是垃圾收集器?
    垃圾收集器是垃圾回收算法(引用计数法、标记清楚法、标记整理法、复制算法)的具体实现,不同垃圾收集器、不同版本的JVM所提供的垃圾收集器可能会有很在差别。

    以JDK8为准:
    在这里插入图片描述
    图中展示了7种不同分代的收集器:
    Serial、ParNew、Parallel Scavenge、CMS、Serial Old、Parallel Old、G1

    而它们所处区域,则表明其是属于新生代还是老年代的收集器:

    新生代收集器:Serial、ParNew、Parallel Scavenge

    老年代收集器:CMS、Serial Old、Parallel Old

    整堆收集器:G1

    两个收集器间有连线,表明它们可以搭配使用:

    Serial / Serial Old
    Serial / CMS
    ParNew / Serial Old
    ParNew / CMS
    Parallel Scavenge / Serial Old
    Parallel Scavenge / Parallel Old
    G1
    

    在这里插入图片描述

    Serial
    Serial 收集器:新生代。发展历史最悠久的收集器。它是一个单线程收集器,它只会使用一个 CPU 或者线程去完成垃圾收集工作,而且在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。
    特点:

    1、新生代收集器,使用复制算法收集新生代垃圾。
    2、单线程的收集器,GC工作时,其它所有线程都将停止工作。
    3、简单高效,适合单 CPU 环境。单线程没有线程交互的开销,因此拥有最高的单线程收集效率。

    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
    设置垃圾收集器:"-XX:+UseSerialGC"  --添加该参数来显式的使用改垃圾收集器;
    

    ParNew
    ParNew 收集器:新生代。Serial 的多线程版本,即同时启动多个线程去进行垃圾收集。
    特点:

    1、新生代收集器。ParNew垃圾收集器是Serial收集器的多线程版本,采用复制算法。
    2、除了多线程外,其余的行为、特点和Serial收集器一样。
    3、只有它能与 CMS 收集器配合使用。
    4、但在单个CPU环境中,不比Serail收集器好,多线程使用它比较好。
    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
    设置垃圾收集器:"-XX:+UseParNewGC"  --强制指定使用ParNew;    
    设置垃圾收集器: "-XX:+UseConcMarkSweepGC"  --指定使用CMS后,会默认使用ParNew作为新生代收集器;
    设置垃圾收集器参数:"-XX:ParallelGCThreads"  --指定垃圾收集的线程数量,ParNew默认开启的收集线程与CPU的数量相同;
    

    Parallel Scavenge
    Parallel Scavenge 收集器:新生代。和 ParNew 的关注点不一样,该收集器更关注吞吐量,尽快地完成计算任务。
    特点:

    1、新生代收集器。
    2、采用复制算法。
    3、多线程收集。
    与ParNew 不同的是:高吞吐量为目标,(减少垃圾收集时间,让用户代码获得更长的运行时间)
    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
    设置垃圾收集器:"-XX:+UseParallelGC"  --添加该参数来显式的使用改垃圾收集器;
    设置垃圾收集器参数:"-XX:MaxGCPauseMillis"  --控制垃圾回收时最大的停顿时间(单位ms)
    设置垃圾收集器参数:"-XX:GCTimeRatio"  --控制程序运行的吞吐量大小吞吐量大小=代码执行时间/(代码执行时间+gc回收的时间)
    设置垃圾收集器参数:"-XX:UseAdaptiveSizePolicy"  --内存调优交给虚拟机管理
    

    Serial Old
    Serial Old 收集器:Serial 的老年代版本,使用标记 - 整理算法。
    特点:

    1、老年代收集器, 采用"标记-整理"算法。
    2、单线程收集。
    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
    在JDK1.5及之前,与Parallel Scavenge收集器搭配使用,
    在JDK1.6后有Parallel Old收集器可搭配。
    现在的作为CMS收集器的后备预案,在并发收集发生Concurrent Mode Failure时使用
    

    Parallnel old
    Parallnel old 收集器,多线程:Parallel 的老年代版本,使用标记 - 整理算法。
    特点:

    1、针对老年代。
    2、采用"标记-整理"算法。
    3、多线程收集。
    4、但在单个CPU环境中,不比Serial Old收集器好,多线程使用它比较好。
    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
     设置垃圾收集器:"-XX:+UseParallelOldGC":指定使用Parallel Old收集器;
    

    CMS
    CMS 收集器:老年代。是一种以获取最短回收停顿时间为目标的收集器,适用于互联网站或者 B/S 系统的服务端上。
    特点:

    1、针对老年代,采用标记-清楚法清除垃圾;
    2、基于"标记-清除"算法(不进行压缩操作,产生内存碎片);
    3、以获取最短回收停顿时间为目标;
    4、并发收集、低停顿;
    5、CMS收集器有3个明显的缺点:1.对CPU资源非常敏感、2.无法处理浮动垃圾,可能出现"Concurrent Mode Failure"失败、3.产生大量内存碎片
    垃圾收集线程与用户线程(基本上)可以同时工作
    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
    设置垃圾收集器:"-XX:+UseConcMarkSweepGC":指定使用CMS收集器;
    

    G1
    G1 收集器:分代收集器。当今收集器技术发展最前沿成果之一,是一款面向服务端应用的垃圾收集器。G1可以说是CMS的终极改进版,解决了CMS内存碎片、更多的内存空间登问题。虽然流程与CMS比较相似,但底层的原理已是完全不同。
    特点:

    1、能充分利用多CPU、多核环境下的硬件优势;
    2、可以并行来缩短(Stop The World)停顿时间;
    3、也可以并发让垃圾收集与用户程序同时进行;
    4、分代收集,收集范围包括新生代和老年代
    5、能独立管理整个GC堆(新生代和老年代),而不需要与其他收集器搭配;
    6、能够采用不同方式处理不同时期的对象;
    7、应用场景可以面向服务端应用,针对具有大内存、多处理器的机器;
    8、采用标记-整理 + 复制算法来回收垃圾
    使用方式:

    //如何设置JVM参数底下会讲解:这里只是列举一部分参数:
    
    设置垃圾收集器:"-XX:+UseG1GC":指定使用G1收集器;
    设置垃圾收集器参数:"-XX:InitiatingHeapOccupancyPercent":当整个Java堆的占用率达到参数值时,开始并发标记阶段;默认为45;
    设置垃圾收集器参数:"-XX:MaxGCPauseMillis":为G1设置暂停时间目标,默认值为200毫秒;
    设置垃圾收集器参数:"-XX:G1HeapRegionSize":设置每个Region大小,范围1MB到32MB;目标是在最小Java堆时可以拥有约2048个Region
    

    JVM参数配置

    JVM内存参数简述

    #常用的设置
    -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。 
    
    -Xmx:最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。 
    
    -Xmn:设置堆中年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。 
    
    -XX:NewSize=n 设置年轻代初始化大小大小 
    
    -XX:MaxNewSize=n 设置年轻代最大值
    
    -XX:NewRatio=n 设置年轻代和年老代的比值。如: -XX:NewRatio=3,表示年轻代与年老代比值为 1:3,年轻代占整个年轻代+年老代和的 1/4 
    
    -XX:SurvivorRatio=n 年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。8表示两个Survivor :eden=2:8 ,即一个Survivor占年轻代的1/10,默认就为8
    
    -Xss:设置每个线程的堆栈大小。JDK5后每个线程 Java 栈大小为 1M,以前每个线程堆栈大小为 256K。
    
    -XX:ThreadStackSize=n 线程堆栈大小
    
    -XX:PermSize=n 设置持久代初始值	
    
    -XX:MaxPermSize=n 设置持久代大小
     
    -XX:MaxTenuringThreshold=n 设置年轻带垃圾对象最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。
    
    #下面是一些不常用的
    
    -XX:LargePageSizeInBytes=n 设置堆内存的内存页大小
    
    -XX:+UseFastAccessorMethods 优化原始类型的getter方法性能
    
    -XX:+DisableExplicitGC 禁止在运行期显式地调用System.gc(),默认启用	
    
    -XX:+AggressiveOpts 是否启用JVM开发团队最新的调优成果。例如编译优化,偏向锁,并行年老代收集等,jdk6纸之后默认启动
    
    -XX:+UseBiasedLocking 是否启用偏向锁,JDK6默认启用	
    
    -Xnoclassgc 是否禁用垃圾回收
    
    -XX:+UseThreadPriorities 使用本地线程的优先级,默认启用	
    
    等等等......
    

    JVM的GC收集器设置

    -XX:+UseSerialGC:设置串行收集器,年轻带收集器 
    
     -XX:+UseParNewGC:设置年轻代为并行收集。可与 CMS 收集同时使用。JDK5.0 以上,JVM 会根据系统配置自行设置,所以无需再设置此值。
    
    -XX:+UseParallelGC:设置并行收集器,目标是目标是达到可控制的吞吐量
    
    -XX:+UseParallelOldGC:设置并行年老代收集器,JDK6.0 支持对年老代并行收集。 
    
    -XX:+UseConcMarkSweepGC:设置年老代并发收集器
    
    -XX:+UseG1GC:设置 G1 收集器,JDK1.9默认垃圾收集器
    

    JVM参数在哪设置
    6.3.1 IDEA在哪里设置JVM参数
    1、单个项目的应用

    在这里插入图片描述
    在这里插入图片描述
    全局的配置

    找到IDEA安装目录中的bin目录
    找到idea.exe.vmoptions文件
    打开该文件编辑并保存。

    在这里插入图片描述
    Eclipse在哪里设置JVM参数
    1、配置单个项目

    点击绿色图标右边的小箭头

    在这里插入图片描述
    2、配置全局JVM参数
    修改Eclipse的配置文件,在eclipse安装目录下的:eclipse.ini文件

    在这里插入图片描述
    war(Tomcat)包在哪里设置JVM参数
    war肯定是部署在Tomcat上的,那就是修改Tomcat的JVM参数

    1、在Windows下就是在文件/bin/catalina.bat,
    增加如下设置:JAVA_OPTS(JAVA_OPTS,就是用来设置 JVM 相关运行参数的变量)

    set "JAVA_OPTS=-Xms512M -Xmx1024M ...等等等 JVM参数"
    

    在这里插入图片描述
    2、Linux要在tomcat 的bin 下的catalina.sh 文件里添加

    注意:位置要在cygwin=false前
    JAVA_OPTS="-Xms512M -Xmx1024M ...等等等 JVM参数"
    

    在这里插入图片描述

    Jar包在哪里设置JVM参数

    Jar包简单,一般都是SpringBoot项目打成Jar包来运行

    #运行时java -jar是直接插入JVM命令就好了
    java -Xms1024m -Xmx1024m ...等等等 JVM参数 -jar springboot_app.jar & 
    

    调优总结
    在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,
    这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。
    初始堆值和最大堆内存内存越大,吞吐量就越高,
    但是也要根据自己电脑(服务器)的实际内存来比较。
    最好使用并行收集器,因为并行收集器速度比串行吞吐量高,速度快。
    当然,服务器一定要是多线程的
    设置堆内存新生代的比例和老年代的比例最好为1:2或者1:3。
    默认的就是1:2
    减少GC对老年代的回收。设置生代带垃圾对象最大年龄,进量不要有大量连续内存空间的java对象,因为会直接到老年代,内存不够就会执行GC
    注释:其实最主要的还是服务器要好,你硬件都跟不上,软件再好都没用
    注释:老年代GC很慢,新生代没啥事
    注释:默认的JVM堆大小好像是电脑实际内存的四分之一左右,

    展开全文
  • JVM参数配置详解

    万次阅读 多人点赞 2018-11-29 00:00:34
    -Xms为JVM启动时申请的最小内存,默认为操作系统物理内存的1/64但小于1G,-Xmx为JVM可申请的最大内存,默认为物理内存的1/4但小于1G,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:...

    JVM调优总结

    默认设置

    -Xms为JVM启动时申请的最小内存,默认为操作系统物理内存的1/64但小于1G
    -Xmx为JVM可申请的最大内存,默认为物理内存的1/4但小于1G,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRation来指定这个比列;当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过XX:MaxHeapFreeRation来指定这个比列。

    堆大小设置

    JVM 中最大堆大小有三方面限制:

    1. 相关操作系统的数据模型(32-bt还是64-bit)限制
    2. 系统的可用虚拟内存限制
    3. 系统的可用物理内存限制

    32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。

    典型设置(8G内存)

    java -Xmx3500m -Xms3500m -Xmn2g -Xss128k
    

    -Xmx3500m 设置JVM最大可用内存为3550M。
    -Xms3500m 设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
    -Xmn2g 设置年轻代大小为2G。整个堆大小 = 年轻代大小 + 年老代大小 + 持久代大小 持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
    -Xss128k 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

    java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
    

    -XX:NewRatio=4 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
    -XX:SurvivorRatio=4 设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
    -XX:MaxPermSize=16m 设置持久代大小为16m。
    -XX:MaxTenuringThreshold=0 设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

    内存溢出问题(HeapDumpOnOutOfMemoryError)

    java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/jvm/app -XX:ErrorFile=/var/log/jvm/app/java_error_%p.log

    回收器选择

    JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器。默认情况下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行判断。
    吞吐量优先的并行收集器
    如上文所述,并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等。

    典型配置

    java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
    

    -XX:+UseParallelGC 选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。
    -XX:ParallelGCThreads=20 配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
    

    -XX:+UseParallelOldGC 配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100
    

    -XX:MaxGCPauseMillis=100 设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100-XX:+UseAdaptiveSizePolicy
    

    -XX:+UseAdaptiveSizePolicy 设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。

    响应时间优先的并发收集器

    如上文所述,并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间。适用于应用服务器、电信领域等。

    典型配置

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
    

    -XX:+UseConcMarkSweepGC设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。
    -XX:+UseParNewGC 设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
    

    -XX:CMSFullGCsBeforeCompaction 由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
    -XX:+UseCMSCompactAtFullCollection 打开对年老代的压缩。可能会影响性能,但是可以消除碎片

    辅助信息

    JVM提供了大量命令行参数,打印信息,供调试使用。主要有以下一些:
    -XX:+PrintGC

    [GC 118250K->113543K(130112K), 0.0094143 secs]
    [Full GC 121376K->10414K(130112K), 0.0650971 secs]

    -XX:+PrintGCDetails

    [GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]
    [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]

    -XX:+PrintGCTimeStamps 可与上面两个混合使用
    -XX:+PrintGC

    11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]

    -XX:+PrintGCApplicationConcurrentTime 打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用

    Application time: 0.5291524 seconds

    -XX:+PrintGCApplicationStoppedTime 打印垃圾回收期间程序暂停的时间。可与上面混合使用

    Total time for which application threads were stopped: 0.0468229 seconds

    -XX:PrintHeapAtGC 打印GC前后的详细堆栈信息

    34.702: [GC {Heap before gc invocations=7:
    def new generation total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)
    eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)
    from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000)
    to space 6144K, 0% used [0x21bd0000, 0x21bd0000, 0x221d0000)
    tenured generation total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)
    the space 69632K, 3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)
    compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
    the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
    ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
    rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
    34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8:
    def new generation total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)
    eden space 49152K, 0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)
    from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)
    to space 6144K, 0% used [0x221d0000, 0x221d0000, 0x227d0000)
    tenured generation total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)
    the space 69632K, 4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)
    compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
    the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
    ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
    rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
    }
    , 0.0757599 secs]
    -Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析。

    常见配置汇总

    堆设置

    -Xms 初始堆大小
    -Xmx 最大堆大小
    -XX:NewSize=n 设置年轻代大小
    -XX:NewRatio=n 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
    -XX:SurvivorRatio=n 年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
    -XX:MaxPermSize=n 设置持久代大小

    收集器设置

    -XX:+UseSerialGC 设置串行收集器
    -XX:+UseParallelGC 设置并行收集器
    -XX:+UseParalledlOldGC 设置并行年老代收集器
    -XX:+UseConcMarkSweepGC 设置并发收集器

    垃圾回收统计信息

    -XX:+PrintGC
    -XX:+PrintGCDetails
    -XX:+PrintGCTimeStamps
    -Xloggc:filename

    并行收集器设置

    -XX:ParallelGCThreads=n 设置并行收集器收集时使用的CPU数。并行收集线程数。
    -XX:MaxGCPauseMillis=n 设置并行收集最大暂停时间
    -XX:GCTimeRatio=n 设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

    并发收集器设置

    -XX:+CMSIncrementalMode 设置为增量模式。适用于单CPU情况。
    -XX:ParallelGCThreads=n 设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

    展开全文
  • Tomcat8 JVM参数配置

    千次阅读 2019-12-13 18:34:05
    一、Windows下设置Tomcat JVM参数 1、未安装成Windows服务的情况(双击bin目录中的startup.bat启动Tomcat,会出现命令窗口): 参数修改步骤: 2、安装成Windows服务的情况(在Windows服务列表中启动Tomcat,不会...

    目录

    一、Windows下设置Tomcat JVM参数

    1、未安装成Windows服务的情况(双击bin目录中的startup.bat启动Tomcat,会出现命令窗口):

    参数修改步骤:

    2、安装成Windows服务的情况(在Windows服务列表中启动Tomcat,不会出现命令窗口):

    参数修改步骤:

     

    二、Linux下设置Tomcat JVM参数


    配置环境说明:

    JDK版本:1.8.0_172 x64位

    Tomcat 版本:apache-tomcat-8.0.15 x64位解压版

    操作系统:Windows/Linux

     

    一、Windows下设置Tomcat JVM参数

    1、未安装成Windows服务的情况(双击bin目录中的startup.bat启动Tomcat,会出现命令窗口):

    参数修改步骤:

    ①修改{tomcat_home}\bin目录下的catalina.bat文件,在setlocal这行代码前面加入如下两行配置信息:

    set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF8" -Ddefault.client.encoding="UTF-8" -Duser.language=Zh
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms8192m -Xmx8192m -Xmn4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC

    新增配置参数的第二行配置可以根据服务器的实际内存进行调整,建议参数如下:

    rem 如果服务器只运行一个 Tomcat
    rem 服务器内存如果是 4G 第二行设置为:
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC
    rem 服务器内存如果是 8G 第二行设置为:
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC
    rem 服务器内存如果是 16G 第二行设置为:
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms8192m -Xmx8192m -Xmn4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC
    rem 服务器内存如果是 32G 第二行设置为:
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms16384m -Xmx16384m -Xmn8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC

    ②双击{tomcat_home}\bin目录下的startup.bat文件,启动tomcat,查看tomcat启动后命令窗口中的日志,通过日志中打印的jvm参数可以看出配置是否生效。

    注意:这种配置方式只有双击startup.bat文件启动tomcat服务时才会生效,安装成windows服务方式启动的tomcat这种配置不会会生效。



    2、安装成Windows服务的情况(在Windows服务列表中启动Tomcat,不会出现命令窗口):

    参数修改步骤:

    ①运行(快捷键win+R)输入regedit,打开注册表

    ②找到目录Apache Software Foundation\Procrun 2.0\Tomcat\Parameters\Java

    注册表中apache的具体路径说明
    32位机器的路径是:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation
    64位机器的路径是:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation

    ③修改JvmMs的参数(Jvm中Xms的大小)

     

    ④修改JvmMx的参数(Jvm中Xmx的大小)

     

    ⑤修改Options的配置

    增加的三行配置:

    -XX:PermSize=256M
    -XX:MaxPermSize=1024m
    -XX:ReservedCodeCacheSize=48m

    注意:步骤③④⑤中的配置可以根据服务器的内存自行调整,具体数值可以参照第一种情况的建议参数进行配置

     

    二、Linux下设置Tomcat JVM参数

    在对应linux下的tomcat版本中,修改 catalina.sh

       # vi /usr/tomcat/bin/catalina.sh

       注:/usr/tomcat/bin/catalina.sh 是 tomcat所在目录的bin目录  (linux环境下)

       找到 # OS specific support.  $var _must_ be set to either true or false.(大概在113行)

       在上句之前加入:

    # CATALINA_OPTS
    
    CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms8192m -Xmx8192m -Xmn4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"

    根据服务器的内存设置相应的JVM参数大小,建议配置如下:

    # 如果服务器只运行一个 Tomcat
    # 服务器内存如果是 4G:
    CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
    # 服务器内存如果是 8G:
    CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
    # 服务器内存如果是 16G:
    CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms8192m -Xmx8192m -Xmn4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
    # 服务器内存如果是 32G:
    CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms16384m -Xmx16384m -Xmn8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
    

     

    展开全文
  • Java虚拟机JVM参数配置说明.pdf
  • JAVA进程的JVM参数配置 -Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3, 请问eden区最终分配的大小是多少? Xms是起始内存 Xmx是最大内存 Xmn是新生代内存 Xss 栈大小。 ...
  • java -jar 启动项目 jvm参数配置

    千次阅读 2020-12-24 16:18:53
    java -jar 启动项目 jvm参数配置 java -jar xxx.jar -Xmx512m 这种情况虽然不会报错,但是jvm参数没有起作用。 正确的方式为 java -Xmx512m -jar xxx.jar 如果要加入spring的参数应该追加在xxx.jar后面 java -...
  • 生产环境jvm参数配置

    千次阅读 2019-03-01 17:53:11
    java 应用程序部署在服务器上,应该具备一些基本的参数。下面分jdk1.8之前,以及 1.8之后分别列出来。以供以后参考 -server -Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k] -XX:...
  • 查看Java JVM参数配置信息命令

    千次阅读 2019-01-03 18:37:00
    查看Java JVM参数配置信息命令 查看Java JVM参数配置信息命令 java -XX:+PrintCommandLineFlags jvm运行时状态的参数,可以很快找出问题所在。现在把几个命令记录一下:1. jstat这个命令对于查看...
  • 线上机器JVM参数配置

    2017-12-05 15:24:04
    记录一下线上机器的JVM参数配置: CATALINA_OPTS="$CATALINA_OPTS -server -Djava.awt.headless=true  6.7补充:之前贴的是web机器的JVM参数配置,看了service的参数配置,稍稍有点不同 web配了新生代1G,...
  •  在$JAVA_HOME/jre/bin下有client和server两个目录,分别代表JVM的两种运行模式。  client运行模式,针对桌面应用,加载速度比server模式快10%,而运行速度为server模式的10分之一。client下默认的堆容量 -Xms1M ...
  • 性能较好的web服务器jvm参数配置

    千次阅读 2017-08-15 16:23:22
    G1垃圾收集器(-XX:+UseG1GC) G1(Garbage First):垃圾收集器是在Java 7后才可以使用的特性,它的长远目标时代替CMS收集器。...一个性能较好的web服务器jvm参数配置: -server//服务器模式 -Xmx
  • tomcat jvm参数配置

    2011-12-09 14:05:38
    详述tomcat服务端配置,使并发更加流畅
  • JVMJVM常见参数配置

    2022-02-27 10:50:11
    JVM常见参数配置 JVM的参数类型: 1、标配参数:-version,-help,-showversion 2、x参数(了解):-Xint:解释执行;-Xcomp:第一次使用就编译成本地代码;-Xmixed:混合模式; 3、xx参数: (1)Boolean类型: ...
  • spark jvm参数配置

    千次阅读 2017-09-22 16:36:10
    1.Driver端的JVM参数: 对于-Xmx,-Xms , yarn-client模式,则默认读取spark-env文件中的SPARK_DRIVER_MEMORY参数值; yarn-cluster模式,则默认读取的是spark-default.conf文件中的spark.driver.extraJavaOptions...
  • SpringBoot(SpringBoot+SpringBoot商品管理系统实战) 1~3年: JVM深度进阶(JVM内存区域+JVM运行时内存+垃圾回收与算法+JAVA 四种引用类型+GC分代收集算法 VS 分区收集算法+GC垃圾收集器等) 并发编程深度进阶...
  • JVM服务器参数配置样例
  • JVM参数配置详解(包含JDK1.8)

    万次阅读 2017-12-25 10:58:13
    JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server...
  • 简单实用JVM参数配置

    2013-06-09 17:00:19
    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、...
  • 正确配置JVM参数-附JVM参数详解

    千次阅读 2020-05-19 21:28:00
    JVM参数类型 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容。 非标准参数(-X) 默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容。 非Stable参数(-XX) 此类...
  • 几个重要的jvm参数配置及建议

    千次阅读 2015-09-22 10:52:51
    jvm配置参数比较多,只有当经常使用时,才能在脑中不忘。而在现在的工作生活中,大家可能经常跟这些参数打交道的时间还是少之又少,只有当线上的服务出问题是,才会去 熟悉。这些是自己工作中调试用到的几个重要的...
  • JVM参数配置总结

    千次阅读 2016-11-09 11:55:51
    JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server ...
  • JVM启动参数配置详解

    千次阅读 2021-04-22 16:56:40
    java基础 JVM启动参数配置JDK8的JVM启动参数默认配置如下:JDK8的JVM启动参数说明如下: JDK8的JVM启动参数默认配置如下: -Xms2g -Xmx2g (按不同容器,4G及以下建议为50%,6G以上,建议设置为70%) -XX:Metaspace...
  • IDEA配置JVM参数

    2022-04-20 07:51:50
    IDEA配置JVM参数 最近在学习JVM的调参调优,idea这个工具也是最近才开始用的,不太熟悉。但是,古话说得好,自己动手,丰衣足食。于是乎,度娘了一番,成功实现效果。接下来讲一下操作步骤(其实很简单的) 1.找到...
  • JVM实战:JVM常用参数配置

    千次阅读 2021-02-27 16:52:10
    本篇主要了解下面内容:1、JVM常用的配置参数如、内存配置参数、GC策略配置参数、日志配置参数、异常信息参数。2、CMS、G1的常用个性化参数。3、常用的一些应用启动参数,在项目启动的时候我们需要配置哪些参数。4、...
  • 线上服务的JVM参数配置

    千次阅读 2016-12-28 17:45:22
    JVM默认推荐配置: 前端机器: -Xmx2048m -Xms2048m -XX:MaxPermSize=256m -XX:PermSize=128m -XX:NewRatio=3 -XX:ParallelCMSThreads=4 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+...
  • tomcat配置jvm参数

    千次阅读 2022-03-29 10:49:16
    配置jvm参数位置不同,所需要的启动方式也不同 tomcat版本8.5 1、windows环境 几种方法之间可能会有重复、还没起细研究 方法一、通过bin目录下的tomcat8.exe启动 直接在java options中添加jvm参数以key=value的形式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 226,615
精华内容 90,646
关键字:

jvm参数配置

友情链接: SteamSSFN[C#].zip