编译参数详解

一. 原始编译命令如下:

java -server -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Djava.net.preferIPv6Addresses=false -Djava.io.tmpdir=/tmp -Djetty.defaultsDescriptor=WEB-INF/web.xml -Duser.timezone=GMT+08 -Xloggc:/var/sankuai/logs/waimai_service_cpc_qs.gc.log.201612151534 -XX:ErrorFile=/var/sankuai/logs/waimai_service_cpc_qs.vmerr.log.201612151534 -XX:HeapDumpPath=/var/sankuai/logs/waimai_service_cpc_qs.heaperr.log.201612151534 -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Denvironment=online -Dmedis_environment=online -Dcore.zookeeper=sgconfig-zk.vip.sankuai.com -Dapp.key=waimai_service_cpc_qs -Djetty.appkey=waimai_service_cpc_qs -Dapp.host=dx-waimai-service-cpcqs09 -Djetty.host=host -Dapp.ip=ip -Dapp.port=8476 -Djetty.port=8476 -Dapp.context=/ -Djetty.context=/ -Dapp.workdir=/opt/meituan/apps/waimai_service_cpc_qs/work -Dapp.logdir=/var/sankuai/logs -Djetty.logs=/var/sankuai/logs -Dconfig.type=prod -Xmx4096m -Xms4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:-OmitStackTraceInFastThrow -XX:NewRatio=3 -XX:ParallelCMSThreads=8 -XX:+CMSParallelRemarkEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djetty.webroot=/opt/meituan/apps/waimai_service_cpc_qs/work -cp WEB-INF/lib/mms-boot-1.2.2.jar com.sankuai.mms.boot.Bootstrap

 二. 分类后的编译参数如下

      参数总量47,其中系统属性23,jvm参数24

  1.  -D<name>=<value> set a system property  设置系统属性

 

例如:java -Dmaven.test.skip=true com/alibaba/thread/Demo01,通过System.getProperty("maven.test.skip")即可获取该属性的内容:true
    • -Dapp.context=/
    • -Dapp.host=dx-waimai-service-cpcqs09
    • -Dapp.ip=10.32.104.100
    • -Dapp.key=waimai_service_cpc_qs
    • -Dapp.logdir=/var/sankuai/logs
    • -Dapp.port=8476
    • -Dapp.workdir=/opt/meituan/apps/waimai_service_cpc_qs/work
    • -Dconfig.type=prod
    • -Dcore.zookeeper=sgconfig-zk.vip.sankuai.com
    • -Denvironment=online
    • -Dmedis_environment=online
    • -Duser.timezone=GMT+08
    • -Djava.io.tmpdir=/tmp : 
    • -Djava.net.preferIPv6Addresses=false  : 禁用ipV6,使用ipV4
    • -Djetty.appkey=waimai_service_cpc_qs
    • -Djetty.context=/ : 设置上下文路径,既访问路径的根路径  
    • -Djetty.defaultsDescriptor=WEB-INF/web.xml :  设置描述,作为hander加载使用 
    • -Djetty.host=dx-waimai-service-cpcqs09 : jetty所在主机的IP或主机名;
    • -Djetty.logs=/var/sankuai/logs
    • -Djetty.port=8476 :设置jetty的端口号;
    • -Dsun.jnu.encoding=UTF-8  :  影响文件名的创建
    • -Dfile.encoding=UTF-8  :  影响到文件内容
    • -Djava.compiler=NONE : 关闭JIT编译,默认使用JIT编译,编译器调优

2. 设置JVM参数

Hotspot JVM提供以下三大类选项:

1. 标准选项:这类选项的功能是很稳定的,在后续版本中也不太会发生变化。运行Java或者java -help可以看到所有的标准选项。所有的标准选项都是以-开头,比如-version, -server等。
2. X选项:比如-Xms。这类选项都是以-X开头,可能由于这个原因它们被称为X选项。运行java -X命令可以看到所有的X选项。这类选项的功能还是很稳定,但官方的说法是它们的行为可能会在后续版本中改变,也有可能不在后续版本中提供了。
3. XX选项:这类选项是属于实验性,主要是给JVM开发者用于开发和调试JVM的,在后续的版本中行为有可能会变化。

XX选项的语法

    • 如果是布尔类型的选项,它的格式为-XX:+flag或者-XX:-flag,分别表示开启和关闭该选项。

    • 针对非布尔类型的选项,它的格式为-XX:flag=value


    1. 标准选项
      • -server : Server VM的初始堆空间会大一些,默认使用的时并行垃圾回收器
      • -client: Client VM相对来讲会保守一些,初始堆空间会小一些,使用串行的垃圾回收器,它的目标是为了让JVM的启动速度更快(仅在32位机器有效)

b. 堆设置

      • -Xms4096m :初始堆大小
      • -Xmx4096m :最大堆大小
      • -XX:NewSize=n :设置年轻代大小
      • -XX:NewRatio=3: 设置年轻代和年老代的比值,不能少于1,如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
      • -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:2,一个Survivor区占整个年轻代的1/10
      • -XX:MaxPermSize=512m :设置持久代大小
      • -XX:PermSize=256m : 设置永久区的初始空间

c. 收集器设置

      • -XX:+UseConcMarkSweepGC :设置并发收集器
      • -XX:+DisableExplicitGC : 忽略手动调用GC的代码使得 System.gc()的调用就会变成一个空调用,完全不会触发任何GC
      • -XX:+ExplicitGCInvokesConcurrent : 可以显式触发CMS的fullgc
      • -XX:+HeapDumpOnOutOfMemoryError : 当JVM发生OOM时,自动生成DUMP文件到下面的-XX:HeapDumpPath。
      • -XX:HeapDumpPath=/var/sankuai/logs/waimai_service_cpc_qs.heaperr.log.201612151534 : 日志路径
      • -XX:-OmitStackTraceInFastThrow : 强制要求每次都要抛出有堆栈的异常(使用-server模式时,该优化选项是开启的,因此在频繁抛出某个异常一段时间后,该优化开始起作用,即只抛出没有堆栈的异常信息)

d. 垃圾回收统计信息

      • -XX:+PrintGC : 可以打印GC的简要信息
      • -XX:+PrintGCDetails :打印GC的详细信息
      • -XX:+PrintCommandLineFlags : 可以让在程序运行前打印出用户手动设置或者JVM自动设置的XX选项,建议加上这个选项以辅助问题诊断
      • -XX:+PrintGCDateStamps
      • -Xloggc:filename : 指定GC log的位置,以文件输出
      • -XX:ErrorFile=/var/sankuai/logs/waimai_service_cpc_qs.vmerr.log.201612151534
  1.       e. 并行收集器设置
      • -XX:ParallelGCThreads=n :设置年轻代的并行收集器收集时使用的CPU数。并行收集线程数。
      • -XX:ParallelCMSThreads=8 : CMS并行线程数
      • -XX:CMSInitiatingOccupancyFraction=80  :  指定在老生代用掉多少内存后开始进行垃圾回收
      • -XX:+CMSClassUnloadingEnabled:垃圾回收会清理持久代,移除不再使用的classes,这个参数只有在 UseConcMarkSweepGC  也启用的情况下才有用。
      • -XX:+CMSParallelRemarkEnabled : 为了减少第二次暂停的时间,开启并行remark
      • -XX:+CMSPermGenSweepingEnabled : 激活永久代CMS收集
      • -XX:+UseCMSCompactAtFullCollection : 使用并发收集器时,开启对年老代的压缩
      • -XX:CMSFullGCsBeforeCompaction=0 : 上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值