JVM虚拟机的一些参数设置

本文持续更新.....

1、GC的输出日志:
    a. -verbose:gc,辅助输出一些详细的gc信息
    b. -XX:+PrintGCDetails,输出gc的详细信息
    c. -XX:PrintGCApplicationStoppedTime,输出gc造成应用造成应用程序暂停的时间
     d. -XX:PrintGCDataStamps,gc发生的时间信息
     e. -XX:PrintHeapAtGC,在gc前后输出堆中各个区域的大小
     f.  -Xloggc:[file],将gc信息输出到单独的日志文件


2、Heap堆配置
    a.-Xms:堆初始大小
    b.-Xmx:堆最大值
   c.-Xmn/Yong:新生代大小
   d.PermSize/Perm:永久代大小。在Java7及以后版本,没有Perm这个内存区,所以这个设置没有意义。
   e.MaxPermSize/Perm:永久代最大大小
   f.-XX:SurvivorRatio:Eden:Survivor,新生代中新生区和幸存区的比值大小,例如:设置Yong区为10,设置-XX:SurvivorRatio=8,即设置Eden区为8,Survivor的s0和s1都为1,因为另个Survivor总有一个 Survivor为空

    -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8

    打印辅助GC信息,堆初始大小20M,最大20M,新生代10M,打印GC详细信息,新生比为8:1。

3、Stack栈设置

    a.-Xss:栈大小

    b.-Xoss:本地方法栈大小(如果虚拟机存在本地方法栈,才有意义。sun公司HotSpot不存在本地方法栈,这

个参数有,但是设置了也没啥用)

4、GC设置:

        -XX:+UseCMSCompactAtFullCollection   :开关参数,默认开启。在老年代内存不够时,或者零碎内存放不下大对象时,进行内存压缩。
        -XX:CMSFullGCsBeforeCompaction=5: 设置当进行5次不压缩的GC后,跟着来一次压缩的GC。
        -XX:MaxGCPauseMillis=m:m是一个大于0的毫秒数。即:收集器尽可能的保证内存回收花费的时间不超过设定值。
        -XX:GCTimeRatio=n:n是大于0小于100的整数。公式1/(1+n)为垃圾收集时间占总时间的百分比。即:如果n=9。那么1/(1+9)=10%。GC运行的时间占总时间的10%。
        -XX:+UseAdaptiveSizePolicy:这是一个开关参数,打开这个参数之后,就不需要手动指定新生代的大小(-Xmn),Eden和Survivor的比例(-XX:SurvivorRatio)、晋升老年代对象大小(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,自动调整这些参数,以配合停顿时间或者吞吐量。
        -XX:PretenureSizeThreshold=m:大于m的对象将直接在老年代分配。例如:-XX:PretenureSizeThreshold=3145728,表示大于3M的对象将直接在老年代分配
        -XX:MaxTenuringThreshold=n:经过n次Minor GC(新生代gc)还存活的对象将进入老年代。默认n=15
        -XX:HandlePromotionFailure:开关参数 ,+/-决定是否开启。作用:进行MinorGC操作时会判断老年代剩余空间是否大于新生代所有对象大小之和。如果大于,则安全。如果小于,则不安全。开启参数,则表示允许不安全操作,可以在不安全的情况下进行MinorGC操作。关闭参数,表示不允许不安全的GC操作,在MinorGC同时要进行FullGC,腾出老年代空间。

你可能感兴趣的:(JVM)