一、startup.sh:

#!bin/sh
if[!-x logs];then
mkdir logs
fi
export EXEC=taskcenter.jar
export CLASSPATH=../config/:${EXEC} export
JAVA_OPS="-server
-XX:PermSize=128m
-XX:MaxPermSize=256m
-Xms1g
-Xmx7g -DappName=jungle-taskcenter
-Dapp.id=jungle-taskcenter -Duser.home=/home/dbe -Xmx512m
-Xms512m -Xss256k
-XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m
-javaagent:/beeb/ap/dbe/agent/skywalking-agent.jar
-Dlogging.config=classpath:logback-kafka.xml
-Dspring.cloud.nacos.discovery.enabled=true
-Dskywalking.agent.service_name=${CURRENT_SERVICE_NAME}
-server -Xdebug -Xnoagent
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintHeapAtGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=${LOG_PATH}/dump.hprof
-XX:MaxTenuringThreshold=9
-XX:+ScavengeBeforeFullGC
-XX:+ReducelnitialCardMarks
-XX:AutoBoxCacheMax=20000
-XX:-UseBiasedLocking
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=4
-XX:MaxGCPauseMillis=200
-Xloggc:${GC_LOG_PATH}
-Ddubbo.registry.file=${JAR_PATH}/dubbo.cache
-Dconfig.path=file:${COMMON_CONFIG_PATH}/com mon.properties;file:${CONFIG_PATH}/config.properties
${JAR_PATH}/${EXECUT_JAR}" echo ${CLASSPATH}
nohup java ${JAVA_OPS} -cp ${CLASSPATH} -jar &>logs/jungle-taskcenter.log 2>logs/jungle-taskcenter-err.log&

二、这些参数的意义

  • -Xss:栈空间大小,栈是线程独占的,所以是一个线程使用栈空间的大小,例如 -Xss256K,如果不设置此参数,默认值是 1M,一般来讲设置成 256K 就足够了

-Xms值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存:

  • -Xms: 堆的初始值,例如 -Xmx2048,初始堆大小为 2G
  • -Xmx: 堆的最大值,例如 -Xmx2048M,允许最大堆内存 2G

过小会导致:java.lang.OutOfMemoryError: PermGenspace:

  • -XX:PermSize:表示非堆区(永久代)初始内存分配大小,其缩写为permanent size(持久化内存)
  • -XX:MaxPermSize:表示对非堆区(永久代)分配的内存的最大上限。

设置HOME目录(idea配置之后,每次打开新项目会):

  • -Duser.home=/home/dbe

新生代内存容量与老生代内存容量的比例:

  • -XX:NewRatio=2

Eden区域Survivor区的容量比值,如默认值为8,代表Eden:Survivor1:Survivor2=8:1:1:

  • -XX:SurvivorRatio=8

Metaspace 空间初始大小,如果不设置的话,默认是20.79M,这个初始大小是触发首次 Metaspace Full GC 的阈值(容易引起错误理解):

  • -XX:MetaspaceSize=128m

JVM参数MetaspaceSize的误解:

JVM参数MetaspaceSize的误解_归海一刀之渔舟唱晚的博客-CSDN博客_metaspacesize

Metaspace 最大值,默认不限制大小,但是线上环境建议设置,例如:

-XX:MaxMetaspaceSize=256m

可以在加载java文件之前进行拦截,修改字节码:

  • -javaagent:/beeb/ap/dbe/agent/skywalking-agent.jar

不懂怎么用,可以查看:

Java探针--javaagent--使用/实例_IT利刃出鞘的博客-CSDN博客_java探针

表示打印 gc 详细信息:

  • -XX:+PrintGCDetails

JVM 参数 -XX:+PrintGCDetails_艾斯比的日常的博客-CSDN博客_-xx:+printgcdetails

使用-XX:+PrintGCDateStamps可以将时间和日期也加到GC日志中:

  • -XX:+PrintGCDateStamps

打印垃圾回收期间程序暂停的时间:

  • -XX:+PrintGCApplicationStoppedTime

如:Total time for which application threads were stopped: 0.0730640 seconds

每次一次GC后,都打印堆信息:

  • -XX:+PrintHeapAtGC

当首次遭遇OOM时导出此时堆中相关信息:

  • -XX:+HeapDumpOnOutOfMemoryError

设置到处dump文件的路径:

  • -XX:HeapDumpPath=${LOG_PATH}/dump.hprof

对象在新生代存活区切换的次数(坚持过MinorGC的次数,每坚持过一次,该值就增加1),大于该值会进入老年代:

  • -XX:MaxTenuringThreshold=9

当它启用并且当前在使用 +UseParallelGC 或 +UseParallelOldGC 时,触发full GC就会先用PSScavenge来收集一次young gen(也就是做一次minor GC),然后再用PSMarkSweep(如果用+UseParallelOldGC)或PSParallelCompact(如果用+UseParallelOldGC)来收集一到多次全堆:

  • -XX:+ScavengeBeforeFullGC

这将用于初始对象分配的并发记忆集更新(细化)工作批处理在一起:

  • -XX:+ReducelnitialCardMarks

加大Integer Cache -XX:AutoBoxCacheMax=20000:

Integer i=3;这语句有着 int自动装箱成Integer的过程,JDK默认只缓存 -128 ~ +127的Integer 和 Long,超出范围的数字就要即时构建新的Integer对象。设为20000后,我们应用的QPS有足足4%的影响。为什么是2万呢,因为-XX:+AggressiveOpts里也是这个值。详见Java Integer(-128~127)值的==和equals比较产生的思考。

-XX:AutoBoxCacheMax=20000

Java Integer(-128~127)值的==和equals比较产生的思考_成者之剑的博客-CSDN博客_integer equal

禁用偏向锁优化:

  • -XX:-UseBiasedLocking

JVM调优之——禁用偏向锁优化_甜糯玉米杯的博客-CSDN博客_usebiasedlocking

新生代使用多线程收集器,老年代使用单线程收集器:

  • -XX:+UseParallelGC

新生代、老年代都使用多线程收集器:

  • -XX:+UseParallelOldGC

GC线程数,默认为 8 + (核数 - 8) * 5 / 8:

  • -XX:ParallelGCThreads=4

最大GC停顿时间,这是个软目标,JVM将尽可能(但不保证)停顿小于这个时间:

  • -XX:MaxGCPauseMillis=200

gc日志路径:

  • -Xloggc:${GC_LOG_PATH}

>logs/jungle-taskcenter.log:表示将nohup日志打印到jungle-taskcenter.log

  • nohup java ${JAVA_OPS} -cp ${CLASSPATH} -jar &>logs/jungle-taskcenter.log 2>logs/jungle-taskcenter-err.log &
  • 2>logs/jungle-taskcenter-err.log &:表示将错误日志输出到jungle-taskcenter-err.log文件;
  • 2>&1 & 表示:表示将正确日志、错误日志都输出到正确日志指定的文件上,这里表示jungle-taskcenter.log文件。

JVM常用参数:

JVM常用参数

三、startup.sh截图

启动脚本,以及jvm参数含义相关推荐

  1. springboot脚本启动bat_SpringBoot修改JVM参数(内置Tomcat命令行启动和IDEA工具配置修改)...

    命令行启动:(java [-options] -jar jarfile [args...]) 在 "-jar" 之前加上相应参数即可 java -Xms512m -Xmx512m ...

  2. 【Eclipse】eclipse中设置tomcat启动时候的JVM参数

    主要通过以下的几个jvm参数来设置堆内存的: -Xmx512m 最大总堆内存,一般设置为物理内存的1/4 -Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情 ...

  3. JVM 参数含义:-Xms和-Xmx

    参数名称 含义 默认值   -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限 ...

  4. java 启动jar包JVM参数

    /opt/java/jdk1.8.0_131/bin/java #运行模式 -server #堆区内存可被分配的最大上限 -Xmx512m #堆区内存初始内存分配的大小 -Xms512m #新生代(E ...

  5. 35.JVM 参数(JVM中的各种参数及含义、收集器相关、PrintGC等各种辅助参数)

    35.JVM 参数 说下下面jvm参数含义: -server -Xms512m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m - ...

  6. JVM基础系列第14讲:JVM参数之GC日志配置

    说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...

  7. 一篇关于Maven项目的jar包Shell启动脚本

    使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...

  8. jboss调jvm参数_在同一台机器上启动多个JBoss A-MQ JVM

    jboss调jvm参数 因此,我最近没有写过很多博客-只是很忙. 但是,我新年的决心是写一些博客,分享一些我经常遇到的事情,即使这些简单的事情可能会帮助一些人. 因此,对于本条目,我将展示一种在单个计 ...

  9. JVM参数-XXMatespaceSize的含义

    在JDK1.8开始有了元空间区(Matespace)来替换永久代(Permanent Generation),那么在设置JVM参数的时候,也要增加上Matespace的相关参数了. 在把JVM参数设置 ...

最新文章

  1. js 正则判断字符串是否为字母或数字
  2. 基于HAproxy的web动静分离及输出状态检测页面
  3. 对网站的代码采集实例
  4. python中home定义是什么_第48p,什么是函数?,Python中函数的定义
  5. docker使用镜像报错:standard_init_linux.go:211: exec user process caused “exec format error“
  6. sql server 生成万年历
  7. 大快人心,盗版串口芯片CH340的被判刑了,公司被罚400万!
  8. 随便贴两个漏洞,如 Apache JServ协议服务
  9. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  10. 魅族发布会邀请函来了!“无字天书”的秘密明晚揭晓
  11. Android Window 9问9答
  12. 国都企信通短信平台发送手机短信的python脚本一例
  13. hough变换检测直线 matlab,Hough变换直线检测MatLab代码 | 学步园
  14. PLC通讯之串口转以太网/WIFI的透传模块(DTU)的专用OPC软件和DLL通讯组件
  15. info setup 制作的安装程序 提示卸载程序出现内部错误找不到此版本的卸载程序的utCompiledCode记录
  16. 10个Python图像免费处理工具,非常全了
  17. mysql定时执行任务
  18. CentOS7-查看IP
  19. 九度oj-1163-素数
  20. ABAP 使用MODIF ID实现动态选择屏幕示例

热门文章

  1. 出现字迹模糊迹象_3个迹象表明您将过度使用云功能
  2. 好几位朋友最近被迫创业!
  3. All in AI?(下)
  4. JAVA使用poi解析execl解决数值被转为科学计数法(如:手机号、身份证号、电话、等)解决方法
  5. (五)Softmax 回归
  6. cmd命令 从C盘转到D盘
  7. arccatalog点要素显示不完_孩子过生日,是选“阴历”还是“阳历”?看完这3点再决定也不迟...
  8. ZZULIOJ-1007,鸡兔同笼(Java)
  9. easyui java代码生成器,easyui+jdbc+xml模板开发自动化生成报表的java工具 - 贪吃蛇学院-专业IT技术平台...
  10. 疫情期间生活如何?看AI作家在线写日记