精华内容
下载资源
问答
  • a.Boolean类型 格式:-XX:[+-]<name> +或-表示启用或者禁用name属性 比如: -XX:+UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器 -XX:+UseG1GC 表示启用G1类型的垃圾回收器 b....
  • Java虚拟机:常见JVM参数配置和GC性能优化 转载 https://blog.csdn.net/a745233700/article/details/87740314 一、常见的JVM参数配置: 1、垃圾回收统计信息: -XX:+PrintGC打印GC简要信息 -XX:+...

    Java虚拟机:常见JVM参数配置和GC性能优化

     

    转载  https://blog.csdn.net/a745233700/article/details/87740314

     

    一、常见的JVM参数配置:

    1、垃圾回收统计信息

    -XX:+PrintGC     打印GC简要信息

    -XX:+PrintGCDetails打印GC的详细信息

    -XX:+PrintGCTimeStamps打印CG发生的时间戳

    -Xloggc:log/gc.log 指定GC log的位置,以文件输出

    -XX:+PrintHeapAtGC 每一次GC前和GC后,都打印堆信息。

    2、堆设置

    -Xms:初始堆大,最小堆

    -Xmx:最大堆大小

    -Xmn:设置新生代的大小

    -XX:NewRatio新生代和年老代的比值,如为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代之和的1/4

    -XX:SurvivorRatio设置两个Survivor区和eden的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:2,一个Survivor区占整个年轻代的1/10

    -XX:PermSize:设置永久区的初始空间

    -XX:MaxPermSize:设置永久区的最大空间。

    -XX:+MaxTenuringThreshold=10:新生代垃圾的最大年龄,代表对象在Survivor区经过10次复制以后才进入老年代。如果设置为0,则年轻代对象不经过Survivor区,直接进入老年代。

    -XX:+PretenureSizeThreshold:设置大对象直接进入老年代的阈值。当对象的大小超过这个值时,将直接在老年代分配。 

    3、栈的分配参数:

    -Xss:设置栈空间的大小。

    4、垃圾收集器设置

    (1)串行收集器的设置:

    -XX:+UseSerialGC:设置串行收集器,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿。

    (2)并行回收收集器设置(ParallelGC收集器的目标是达到一个可控制的吞吐量)

    -XX:+UseParNewGC:设置年轻代为并行收集。

    -XX:+UseParallelGC:设置年轻代使用并行回收收集器。多个线程并行执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大。

    -XX:+UseParalledlOldGC:设置老年代为并行回收收集器,Java1.6之后才出现。

    -XX:ParallelGCThreads=n:设置并行收集器收集时使用的线程数,最好与CPU数目相等。

    -XX:MaxGCPauseMillis=n:设置年轻代每次并行垃圾回收的最大暂停时间。

    -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

    -XX:+UseAdaptiveSizePolicy:自适应策略,自动选择年轻代区大小和相应的Survivor区比例。

    (3)CMS并发收集器:(以最短停顿为目标)

    -XX:+UseConcMarkSweepGC:使用CMS内存收集。

    -XX:+ParallelCMSThreads: 设定 CMS 的线程数量。 

    -XX:CMSFullGCsBeforeCompaction:CMS多少次后进行内存压缩,由于并发收集器不对内存空间进行压缩整理,所以运行一段时间以后会产生"碎片",使得运行效率降低。

    -XX:+UseCMSCompactAtFullCollection:在FULL GC的时候,对年老代的压缩。CMS是不会移动内存的,因此,这个非常容易产生碎片,导致内存不够用,因此,内存的压缩这个时候就会被启用。可能会影响性能,但是可以消除碎片。

    -XX:+CMSInitiatingOccupancyFraction:设置 CMS 收集器在老年代空间被使用多少后触发,默认为 68%。 

    -XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收。

    -XX:+CMSParallelRemarkEndable:启用并行重标记。 

    -XX:CMSInitatingPermOccupancyFraction:当永久区占用率达到这一百分比后,启动 CMS 回收 (前提是-XX:+CMSClassUnloadingEnabled 激活了)。 

    -XX:UseCMSInitatingOccupancyOnly:表示只在到达阈值的时候,才进行 CMS 回收。 

    -XX:+CMSIncrementalMode:使用增量模式,比较适合单 CPU。 

    (4)G1收集器:

    -XX:+UseG1GC:使用 G1 回收器。 

    -XX:+UnlockExperimentalVMOptions:允许使用实验性参数。 

    -XX:+MaxGCPauseMills:设置最大垃圾收集停顿时间。 

    -XX:+GCPauseIntervalMills:设置停顿间隔时间。 

     

    二、JVM的GC性能优化:

    对于GC的性能主要有2个方面的指标:吞吐量(工作时间不算,gc的时间占总的时间比)和暂停时间。

    1. 堆大小:

           默认情况下,vm会增加/减少heap大小以维持free space在整个vm中占的比例,这个比例由MinHeapFreeRatio和MaxHeapFreeRatio指定。

    一般而言,server端的app会有以下规则:

    (1)对vm分配尽可能多的内存;

    (2)将Xms和Xmx设为一样的值。如果虚拟机启动时设置使用的内存比较小,这个时候又需要初始化很多对象,虚拟机就必须重复地增加内存。

    (3)处理器核数增加,内存也跟着增大。

    2. 年轻代:

           (1)对于程序流畅性运行影响的因素是新生代的大小。新生代越大,minor collection越少;但是在堆大小固定情况下,新生代越大就意味着越小的老年代,就意味着更多的major collection。

           (2)NewRatio反映的是新生代和老年代的大小比例。NewSize和MaxNewSize反映的是young generation大小的下限和上限,将这两个值设为一样就固定了young generation的大小(同Xms和Xmx设为一样)。

          (3)SurvivorRatio也可以优化survivor的大小,不过这对于性能的影响不是很大。SurvivorRatio是Eden和Survior大小比例。

    一般而言,server端的app会有以下规则:

    (1)首先决定能分配给vm的最大的堆大小,然后设定最佳的young generation的大小;

    (2)如果堆大小固定后,增加新生代的大小意味着减小老年代大小。让老年代在任何时候够大,能够容纳所有存活的对象(留10%-20%的空余)。

    3、年轻代大小选择

    (1)响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制,在此种情况下,年轻代收集发生的频率也是最小的,同时,减少到达年老代的对象。

    (2)吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度,因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。

    (3)避免设置过小。当新生代设置过小时会导致:①YGC次数更加频繁;②可能导致YGC对象直接进入旧生代,如果此时旧生代满了,会触发FGC。

    4、年老代大小选择

    (1)响应时间优先的应用:年老代使用并发收集器。如果堆设置小了,可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。一般需要参考以下数据:

    并发垃圾收集信息、持久代并发收集次数、传统GC信息、花在年轻代和年老代回收上的时间比例。

    (2)吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象。

    5、较小堆引起的碎片问题
    因为CMS年老代的并发收集器使用标记清除算法所以不会对堆进行压缩当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象。但是,当堆空间较小时,运行一段时间以后,就会出现"碎片",如果并发收集器找不到足够的空间,那么并发收集器将会停止,可能需要进行如下配置:
    -XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩。
    -XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩。

    4、用64位操作系统,Linux下64位的jdk比32位jdk要慢一些,但是吃得内存更多,吞吐量更大。

    5、XMX和XMS设置一样大,MaxPermSize和MinPermSize设置一样大,这样可以减轻伸缩堆大小带来的压力

    6、CMS的目标是最短的GC停顿时间,使用CMS的好处是用尽量少的新生代,然后老生代利用CMS并行收集,这样能保证系统低延迟的吞吐效率。

    7、系统停顿的时候可能是GC的问题也可能是程序的问题,多用jmap和jstack查看,或者killall -3 java,然后查看java控制台日志,能看出很多问题。

    8、如果用了缓存,那么年老代应该大一些,缓存的HashMap不应该无限制长,建议采用LRU算法的Map做缓存,LRUMap的最大长度也要根据实际情况设定。

    9、采用并发回收时,年轻代小一点,年老代要大,因为年老代用的是并发回收,即使时间长点也不会影响其他程序继续运行,网站不会停顿。

    10、JVM参数的设置(特别是 –Xmx –Xms –Xmn -XX:SurvivorRatio  -XX:MaxTenuringThreshold等参数的设置)没有一个固定的公式,需要根据PV old区实际数据、YGC次数等多方面来衡量。为了避免promotion faild可能会导致xmn设置偏小,也意味着YGC的次数会增多,处理并发访问的能力下降等问题。每个参数的调整都需要经过详细的性能测试,才能找到特定应用的最佳配置。

    promotion failed:(晋升失败)

    垃圾回收时promotion failed,一般可能是两种原因产生,第一个原因是To survivor救助空间不够,救助空间里的对象还不应该被移动到年老代,但年轻代又有很多对象需要放入救助空间;第二个原因是年老代没有足够的空间接纳来自年轻代的对象;这两种情况都会转向Full GC,网站停顿时间较长。

    解决方案:

    第一个原因解决办法是去掉救助空间,设置-XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0即可,但是因为没有用到救助空间,所以年老代容易满,Full GC执行会比较频繁,所以可以把救助空间加大,这样也不会有promotion failed。

    第二个原因我的解决办法是设置CMSInitiatingOccupancyFraction为某个值(假设70),这样年老代空间到70%时就开始执行CMS,年老代有足够的空间接纳来自年轻代的对象。

    11、实际编程中的性能优化:

    下面是一些在实际写程序的过程中应该注意的点:养成这些习惯可以在一定程度上减少内存的无谓消耗,进一步就可以减少因为内存不足导致GC不断。参考自:https://blog.csdn.net/antony9118/article/details/51375662

    (1)减少new对象。每次new对象之后,都要开辟新的内存空间。这些对象不被引用之后,还要回收掉。因此,如果最大限度地合理重用对象,或者使用基本数据类型替代对象,都有助于节省内存;

    (2)多使用局部变量,减少使用静态变量。局部变量被创建在栈中,存取速度快。静态变量则是在堆内存;

    (3)避免使用finalize,该方法会给GC增添很大的负担;

    (4)如果是单线程,尽量使用非多线程安全的,因为线程安全来自于同步机制,同步机制会降低性能。例如,单线程程序,能使用HashMap,就不要用HashTable。同理,尽量减少使用synchronized

    (5)用移位符号替代乘除号。eg:a*8应该写作a<<3

    (6)对于经常反复使用的对象使用缓存;

    (7)尽量使用基本类型而不是包装类型,尽量使用一维数组而不是二维数组;

    (8)尽量使用final修饰符,final表示不可修改,访问效率高;

    (9)单线程情况下(或者是针对于局部变量),字符串尽量使用StringBuilder,比StringBuffer要快;

    (10)String为什么慢?因为String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。如果不能保证线程安全,尽量使用StringBuffer来连接字符串。这里需要注意的是,StringBuffer的默认缓存容量是16个字符,如果超过16,apend方法调用私有的expandCapacity()方法,来保证足够的缓存容量。因此,如果可以预设StringBuffer的容量,避免append再去扩展容量。如果可以保证线程安全,就是用StringBuilder。
     

    展开全文
  • 常见jvm参数配置

    2019-05-17 12:15:02
    垃圾收集器做一个实战的调优,你自己可以下去做一...请求的吞吐量的,待会我也会说一下吞吐量的一个意思,我们今天可能会讲到哪些内容呢,关于JVM参数的一个调优, 我们怎么去配一个JVM的基本的参数,堆内存大小,配置新生...
    垃圾收集器做一个实战的调优,你自己可以下去做一个小实验,以后你要做架构师的时候,生产环境关于JVM调优的时候,
    
    一般都是架构师去做的,这个时候你可以大致的去了解一下,今天会讲到一个性能测试工具,JMeter,是用来测试HTTP
    
    请求的吞吐量的,待会我也会说一下吞吐量的一个意思,我们今天可能会讲到哪些内容呢,关于JVM参数的一个调优,
    
    我们怎么去配一个JVM的基本的参数,堆内存大小,配置新生代的一个比例参数,老年代的几个参数,做开发的一般的都会
    
    遇到方法区异常,还有栈异常,栈溢出的,其实还是比较常见的,我们怎么做一个参数的一个配置,内存溢出和内存泄露的区别,
    
    因为很多在初学的时候,在字面上对于溢出和泄露,两个概念肯定会搞混淆,内存泄露其实是包含了内存溢出的,
    
    具体什么意思,讲到市面上比较流行的垃圾收集器,串行回收和并行回收,CMS,四种收集器会详细讲一下,测试一个吞吐量
    JVM参数的配置,这个有没有人配过的,配置过一些参数的,你们没有遇到过内存溢出吗,遇到内存溢出肯定是会配置内存参数的,
    
    调堆内存的一个大小,其实JVM参数调优还是比较重要的,如果你们做到架构师的级别的时候,基本上生产环境每台服务器的配置,
    
    都是由你来做的,其实JVM相关的参数,有非常非常多,我在这里可能只讲比较常用的,你们下次可以研究一下更细节的,我只说
    
    几个比较常见的,第一个我会讲到-XX:+PrintGC,只要是在我们JAVA运行的时候,你配置这样一个JVM参数,当它每次GC做一个
    
    回收的时候,都会去打印一个日志,还有一个是-XX:+UseSerialGC,是专门做串行回收的,串行回收现在一般用的比较少,
    
    -XX:+PrintGCDetail是可以更加详细的打印一些GC信息,-Xms这个常用的是起什么作用呢,表示堆初始值,表示我堆内存的时候,
    
    我最开始初始的时候的堆内存大小是多少,这是你们以后经常会遇到的,堆的初始值一定要和最大值设置成相等的,
    
    如果不相等的情况下,-Xmx表示配置堆的最大的可用值,
    
    表示配置堆的最大的一个大小,堆内存默认配置的是4个G,如果你们没有配置JVM参数的话,默认是4个G的,但是有人会说
    
    如果我的电脑是2个G呢,2个G的话它就根据你的实际内存来定的,因为在我之前做生产服务器的时候,比如我的是8G内存,
    
    他默认就是4个G,不是8个G的,还有一个叫-Xmn,表示新生代的最大可用值,如果新生代一旦满的情况下,会发生这个GC的,
    
    如果新生代满的情况下,会产生什么GC,Minor GC,Full GC是会把新生代和老年代都会回收的,还有一个参数,
    
    -XX:SuvivorRatio这个参数也是用的比较多的,他是配置eden区和from/to区的一个比列大小,eden区一般比from大两倍,
    
    相当于eden区占两份,from/to占一份,还有一个参数-XX:NewRatio=2主要是配置新生代和老年代的一个占比,这个几个参数
    
    你们可以记下了,配置垃圾收集器,G1,还有CMS,在做JVM配置的时候,初始值一定和要最大值相等,
    
    如果不等的情况下,如果我现在的堆初始值是10,最大值是512M,这样的话会有什么问题呢,就会产生垃圾回收机制不停的在回收,
    
    因为我的空间太小了,不停的申请,不停的回收,不停的去申请内存,这个一定要相等的,不要配置初始值是0M,然后堆的最大值是512M,
    
    这样的话性能是不好的,减少垃圾回收的次数,垃圾回收的时候如果每次都在回收的情况下,这个时候其他的工作线程是会停顿一段
    
    时间的,但是我们人为的看不出来,这个时候我们都是看不出来的,为什么看不出来呢,有的时候是因为你的服务器配置太好了,
    
    他的回收可能不是很频繁,所以对整个程序影响不大,如果你的初始值和堆内存配置不大的情况下,这个时候垃圾回收机制不停的
    
    回收的情况下,这样会导致程序会一直停下,运行一下,停一下,这样对应用程序不好的,本身垃圾回收机制会导致其他线程暂停的,
    
    为什么暂停呢,如果说你不暂停的情况下,如果又产生新的垃圾呢,那我怎么去回收呢,所以他这么做的目的,保证回收的时候
    
    稍微干净一点,这是我要讲的第一个原则,第二个原则是什么呢,一定要把新生代堆的空间,一定要比老年代要小,垃圾回收器回收的
    
    时候,尽量在新生代里做回收,不要在老年代做回收,老年代的对象已经经历过很多考验了,基本上都是经历过15次的考验,
    
    如果非常成熟的情况下,会从eden区晋升到from区或者to区,然后到老年代里面去,这样他是非常稳定的,为什么要垃圾回收到新生代
    
    回收呢,新生代的对象可能一次之后就不再使用了,所以要把新生代的比列稍微小一点,什么时候垃圾回收机制会频繁回收呢,
    
    就是我的空间比较小的情况下,他的回收次数比较多,如果在生产环境的时候,你会发现好多公司怎么配的,一般把新生代配置为
    
    1:2,就是新生代占比1份,老年代占比2份,这样的话,我新生代占比越小的情况下,垃圾回收机制就可能越频繁,如果老年代占比
    
    越大的情况下,垃圾回收机制就可能不会那么频繁去回收,这样的话对整个性能就会非常好,大体回收原则
    常见参数配置
    -XX:+PrintGC      每次触发GC的时候打印相关日志
    -XX:+UseSerialGC      串行回收
    -XX:+PrintGCDetails  更详细的GC日志
    -Xms               堆初始值
    -Xmx               堆最大可用值
    -Xmn               新生代堆最大可用值
    -XX:SurvivorRatio  用来设置新生代中eden空间和from/to空间的比例.
    -XX:NewRatio       配置新生代与老年代占比 1:2
    含以-XX:SurvivorRatio=eden/from=den/to
    总结:在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,
    这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。
    -XX:SurvivorRatio     用来设置新生代中eden空间和from/to空间的比例.
    

     

    展开全文
  • 常见JVM参数汇总

    千次阅读 2019-06-30 13:12:57
    常见配置举例: 设置:-Xmx3550m -Xms3550m -Xmn2g -Xss128k 设置:-Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 吞吐量优先的并行收集器,...

    常见配置举例:
    设置:-Xmx3550m -Xms3550m -Xmn2g -Xss128k
    设置:-Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
    吞吐量优先的并行收集器,并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等。
    配置:-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
    配置:-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC 
    配置:-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy 
    响应时间优先的并发收集器,并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间,使用与应用服务器,电信领域等。
    -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
    -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection 
    ##案例:在Eclipse配置JVM的参数
    通过Run as->Run Configurations-->Arguments-->VM Arguments
    ##JVM调优之Tomcat启动参数配置及详解
    Tomcat内存溢出
        在Tomcat 启动脚本(catalina.sh/catalina.bat)首行添加如下配置即可解决此问题
        JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=512m"
    #参数解析
    ##堆设置 

    -Xms:初始堆大小 
    -Xmx:最大堆大小  建议Xmx与-Xmx相同,避免每次垃圾回收完成后JVM重新分配内存
    -Xmn:年轻代大小  (堆=年轻代+年老代+永久代 增大年轻代会减小年老代)建议堆*3/8
    -Xss:每个线程的堆栈大小 (小应用 栈浅128k/ 大应用256k 对性能影响比较大,需要严格的测试)
    -XX:NewSize=n:年轻代大小 
    -XX:NewRatio=n:年老代:年轻代比值
    -XX:SurvivorRatio=n:年轻代中 Eden:SFrom:STO=n:1:1
    -XX:PretenureSizeThreshold:直接晋升到老年代的对象大小
    -XX:MaxTenuringThreshold=0:垃圾最大年龄.
        设置0 年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.
        如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活 时间,增加在年轻代即被回收的概率.
    -XX:PermSize:永久代(perm gen)初始值。默认为物理内存的1/64。
    -XX:MaxPermSize:持久代最大值。物理内存的1/4。

    ##垃圾回收统计信息 
    -XX:+PrintGC 
    -XX:+PrintGCDetails 
    -XX:+PrintGCTimeStamps 
    -XX:+PrintGCDateStamps — 打印GC操作的时间戳
    -Xloggc:filename :把相关日志信息记录到文件以便分析。
    -XX:PrintHeapAtGC :打印GC前后的详细堆栈信息


    ##收集器设置 
    -XX:+UseSerialGC:串行收集器 虚拟机Client模式-Serial+Serial Old
    -XX:+UseParallelGC:并行收集器 虚拟机server模式-Parallel Scavenge+Serial Old
    -XX:+UseParNewGC:使用ParNew+SerialOld

    -XX:+UseParalledlOldGC:并行年老代收集器 Parallel Scavenge+Parallel Old
    -XX:+UseConcMarkSweepGC:并发收集器 ParNew+CMS+Serial Old(后备 CMS出现Concurrent Mode Failure失败)


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


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

    ##其他:
    -XX:-DisableExplicitGC — 让System.gc()不产生任何作用
    -XX:PrintTenuringDistribution — 设置每次新生代GC后输出幸存者乐园中对象年龄的分布
    -XX:InitialTenuringThreshold / -XX:MaxTenuringThreshold:设置老年代阀值的初始值和最大值
    -XX:TargetSurvivorRatio:设置幸存区的目标使用率
    -XX:+UseAdaptiveSizePolicy:动态调整java堆中各个区域的大小以及进入老年代的年龄
    -XX:+HandlePromotionFailure:是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor区的所有对象都存活的极端情况

    ##cms收集器启动后 相关参数设置
    注意:并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片”,使得运行效率降低. 
    CMSFullGCsBeforeCompaction=5:cms在n次GC后,启动内存碎片整理。
    UseCMSCompactAtFullCollection:cms完成后,启动内存碎片整理
    CMSInitiatingOccupancyFraction:老年代使用多少后触发cms 默认68%

     

    展开全文
  • 常见JVM参数讲解

    2019-10-24 10:22:20
    -Xmx10240m:最大堆大小 -Xms10240m:初始堆大小 -Xmn5120m:年轻代大小 -XXSurvivorRatio:年轻代中,Eden与Survivor区(to,from区)的比值;默认8,即Eden独占8,to与from各占1 -XX:NewRatio:老年代与新生代...

    -Xmx10240m:最大堆大小

    -Xms10240m:初始堆大小

    -Xmn5120m:年轻代大小

    -XXSurvivorRatio:年轻代中,Eden与Survivor区(to,from区)的比值;默认8,即Eden独占8,to与from各占1

    -XX:NewRatio:老年代与新生代的比值;如4,即是新生代占堆的1/5

    展开全文
  • 一、常见JVM参数配置: 1、垃圾回收统计信息: -XX:+PrintGC 打印GC简要信息 -XX:+PrintGCDetails打印GC的详细信息 -XX:+PrintGCTimeStamps打印CG发生的时间戳 -Xloggc:log/gc.log 指定GC log的位置,以文件输出 -...
  • JVM虚拟机参数 -XX:+,表示开启option选项 -XX:+,关闭option选项 -XX:=,表示将opiton选项值设置为value -XX:+TraceClassLoading,用于追踪JVM虚拟机启动时,加载的所有类的信息,会全打印出来 -Xms200M,指的是JVM...
  • 一些常用的jvm参数设置 -Xms1024m -Xmx1024m -Xmn256M -XX:MaxDirectMemorySize=128M -XX:MaxPermSize=128M -XX:+UseConcMarkSweepGC -Xss512K -XX:+UseParNewGC -XX:+UseCompressedOops -XX:+...
  • JVM参数类型与设置 安装JDK,配置系统环境参数后,输入java -help,红框标记的就是我们设置 JVM参数的区域。 [-options]意思是不强制要求设置,java命令支持各种参数设置,这些参数可以分为以下类别 标准参数:JVM...
  • idea中设置JVM参数,简单理解JVM常见参数,JVM调优简单入门前面学习了JVM的内存分布,今天就来验证下。顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数。一、idea设置全局的...
  • 常见jvm调优参数总结

    2020-02-14 09:57:24
    Java1.7的jvm参数官方网站地址: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html Java1.8的jvm参数官方网站地址: ...
  • 前面学习了JVM的内存分布,今天就来验证下。顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,206
精华内容 482
关键字:

常见jvm参数