项目中JAVA_OPTS配置各个参数含义

项目中tomcat设置java_opts:

JAVA_OPTS="$JAVA_OPTS -server -Xmx512m -Xms512m -Xss256K -XX:NewRatio=2 -XX:SurvivorRatio=6 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=32M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:ErrorFile=/home/QbDev/h24log/appNew_err_%p.log -XX:HeapDumpPath=/home/QbDev/h24log/heapOOM.dump -XX:+PrintHeapAtGC -Xloggc:/home/QbDev/h24log/gc.log -DNEWS24H_CONF_PATH=$NEWS24H_CONF_PATH/app"
 

-Xmx512m:设置JVM最大可用内存为512M;

-Xms512m:设置JVM启动时堆的初始化大小。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xss256K:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

-XX:NewRatio=2 :设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为2,则年轻代与年老代所占比值为1:2,年轻代占整个堆栈的1/3
-XX:SurvivorRatio=6 :设置年轻代中Eden区与Survivor区的大小比值。设置为6,则两个Survivor区与一个Eden区的比值为2:6,一个Survivor区占整个年轻代的1/8

-XX:+DisableExplicitGC:禁止代码中显示调用GC。如果加上了这个JVM启动参数,那么代码中调用System.gc()没有任何效果,相当于是没有这行代码一样。如果我们的应用中使用了java nio中的direct memory,那么使用-XX:+DisableExplicitGC一定要小心,存在潜在的内存泄露风险。

-XX:+UseConcMarkSweepGC:CMS收集器也被称为短暂停顿并发收集器。它是对年老代进行垃圾收集的。CMS收集器通过多线程并发进行垃圾回收,尽量减少垃圾收集造成的停顿。CMS收集器对年轻代进行垃圾回收使用的算法和Parallel收集器一样。这个垃圾收集器适用于不能忍受长时间停顿要求快速响应的应用。可使用

-XX:ParallelCMSThreads=n JVM选项来限制CMS收集器的线程数量。当CPU数量小于8个时,值等于CPU数量。当CPU数量大于8个时,值等于 3+((5*CPU个数)/8)

-XX:+UseParNewGC:表示要强制使用parNew收集器在新生代回收空间。 老年代使用串行回收器

-XX:+CMSParallelRemarkEnabled : 降低标记停顿

-XX:+CMSClassUnloadingEnabled:使用CMS回收perm区(class数据)

-XX:LargePageSizeInBytes=32M: 内存页的大小不可设置过大, 会影响Perm的大小

-XX:+UseFastAccessorMethods : 原始类型的快速优化

-XX:+UseCMSInitiatingOccupancyOnly : 使用手动定义初始化定义开始CMS收集

-XX:CMSInitiatingOccupancyFraction=70 : 使用cms作为垃圾回收使用70%后开始CMS收集(JDK1.5 时,CMSInitiatingOccupancyFraction 的默认值是 68;JDK1.6 时,默认值调高为 92。)为了保证不出现promotion failed(见下面介绍)错误,该值的设置需要满足以下公式CMSInitiatingOccupancyFraction计算公式

 

-XX:SoftRefLRUPolicyMSPerMB=0 : 每兆堆空闲空间中SoftReference的存活时间(默认值 1s)

-XX:+PrintClassHistogram : garbage collects before printing the histogram.

-XX:+PrintGC :输出GC日志

输出形式:

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

-XX:+PrintGCDetails :输出GC的详细日志

输出形式:[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:+PrintGCDateStamps :输出GC的时间戳(以基准时间的形式)

-XX:+HeapDumpOnOutOfMemoryError : 参数表示当JVM发生OOM时,自动生成DUMP文件。

-XX:-OmitStackTraceInFastThrow :强制要求JVM始终抛出含堆栈的异常

-XX:ErrorFile=/home/QbDev/h24log/appNew_err_%p.log :生成error 文件的路径, 默认是在java运行的当前目录

-XX:HeapDumpPath=/home/QbDev/h24log/heapOOM.dump:发生了 内存溢出错误 dump路径

-XX:+PrintHeapAtGC -Xloggc:/home/QbDev/h24log/gc.log : 打印GC前后的详细堆栈信息,日志文件的输出路径

-XX:PermSize=64M /-XX:MaxPermSize=64M : 方法区,永久区大小设置。JVM初始分配的非对内存64M。永久区保存系统的类信息。比如类的字段、方法、常量池等如果系统定义了太多的累,导致方法区溢出,虚拟机同样会抛出内存溢出错误

JDK8+移除了Perm,引入了Metapsace元数据区,元数据库区的大小可以使用-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m 指定。这是一块堆外的直接内存。与永久区不同,如果不指定大小,默认情况下,虚拟机会耗尽所有的可用系统内存

-DNEWS24H_CONF_PATH=$NEWS24H_CONF_PATH/app : 设置启动参数

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值