jvm:代码自动生成jvm性能优化参数

public class JvmParam {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();
//        stringBuilder.append("-Dresin.home=$SERVER_ROOT ");
        stringBuilder.append("-server ");
        long totalMemory = 16*1024;  //电脑内存16G,转换为M
        //System.out.println(totalMemory);

        //初始堆内存大小(物理内存的1/64),默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.
        long heapSize = totalMemory / 4;
        stringBuilder.append("-Xms" + heapSize + "M ");
        //最大堆内存大小(物理内存的1/4), 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制
        stringBuilder.append("-Xmx" + heapSize + "M ");

        //持久代初始值,物理内存1/64
        long maxPermSize = totalMemory / 4;
        stringBuilder.append("-XX:MetaspaceSize=" + maxPermSize + "M ");
        //持久代初始值,物理内存1/4
        stringBuilder.append("-XX:MaxMetaspaceSize=" + maxPermSize + "M ");
        /*XMX和XMS设置一样大,MetaspaceSize和MaxMetaspaceSize设置一样大,这样可以减轻伸缩堆大小带来的压力*/

        //年轻代大小(eden+ 2 survivor space),整个堆内存的1/3,一般eden区与S0、S1区的大小比例为为8:1:1
        //整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.
        //-XX:NewSize
        //-XX:MaxNewSize
        long youngSize = heapSize / 3 ;
        stringBuilder.append("-Xmn" + youngSize + "M ");
        //Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
        stringBuilder.append("-XX:SurvivorRatio=8 ");
        //线程的堆栈大小,一般小的应用,如果栈不是很深,应该是128k够用的 大的应用建议使用256k。
        //根据应用的线程所需内存大小进行调整.在相同物理内存下,减小这个值能生成更多的线程
        stringBuilder.append("-Xss256K ");
        //关闭System.gc()
        stringBuilder.append("-XX:+DisableExplicitGC ");
        //使用CMS内存收集
        stringBuilder.append("-XX:+UseConcMarkSweepGC ");
        //设置年轻代为并行收集
        stringBuilder.append("-XX:+UseParNewGC ");
        //降低标记停顿
        stringBuilder.append("-XX:+CMSParallelRemarkEnabled ");
        //在FULL GC的时候,对年老代的压缩,可能会影响性能,但是可以消除碎片
//        stringBuilder.append("-XX:+UseCMSCompactAtFullCollection ");
        //多少次后进行内存压缩
//        stringBuilder.append("-XX:CMSFullGCsBeforeCompaction=0 ");
        stringBuilder.append("-XX:+CMSClassUnloadingEnabled ");
        //内存页的大小不可设置过大, 会影响Perm的大小
        stringBuilder.append("-XX:LargePageSizeInBytes=128M ");
        //原始类型的快速优化
        stringBuilder.append("-XX:+UseFastAccessorMethods ");
        //使用手动定义初始化定义开始CMS收集
        stringBuilder.append("-XX:+UseCMSInitiatingOccupancyOnly ");
        //设置Perm Gen使用到达多少比例时触发
        stringBuilder.append("-XX:CMSInitiatingOccupancyFraction=70 ");
        //每兆堆空闲空间中SoftReference的存活时间
        stringBuilder.append("-XX:SoftRefLRUPolicyMSPerMB=0 ");
        //garbage collects before printing the histogram
        stringBuilder.append("-XX:+PrintClassHistogram ");
        stringBuilder.append("-XX:+PrintGCDetails ");
        //打印GC前后的详细堆栈信息
        stringBuilder.append("-XX:+PrintHeapAtGC ");
//        stringBuilder.append("-Xloggc:log/gc.log ");

        System.out.println(stringBuilder.toString());
    }
}

输出结果:

-server -Xms4096M -Xmx4096M -XX:MetaspaceSize=4096M -XX:MaxMetaspaceSize=4096M -Xmn1365M -XX:SurvivorRatio=8 -Xss256K -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintHeapAtGC 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行云的逆袭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值