springboot项目启动占用内存_springboot项目编译、运行优化等相关操作

本文详细介绍了SpringBoot项目的编译打包、运行方式,包括使用Maven进行本地和服务器的打包,以及通过不同参数启动Java应用进行内存调整。还探讨了如何开启远程debug和JVisualVM远程监控,以及生产环境的JVM调优策略,例如内存分配、垃圾回收设置。同时,列举了一些常用的JVM监控命令和工具。
摘要由CSDN通过智能技术生成

本篇主要记录在使用springboot时,相关的操作:

(1)编译打包、执行springboot项目

本地:mvn clean package -U --settings D:\devsoft\apache-maven-3.5.3\conf\hubs1settings.xml -Dmaven.test.skip=true -Pdev

服务器:mvn clean package -U -Dmaven.test.skip=true -Ptest

(2)运行springboot项目

java -jar xxx.jar

//pinpoint-agent监控的方式启动springboot项目

nohup java -Xms6144m -Xmx6144m -XX:PermSize=1024m -XX:MaxPermSize=1024m -javaagent:/home/xpp/apm/pinpoint-agent/pinpoint-bootstrap.jar -Dpinpoint.agentId=PP_123.16.xx.115 -Dpinpoint.applicationName=crs_bb_bb-xxx-data -jar xxx.jar

(3)SpringBoot开启远程debug与远程监控

a.开启远程debug

nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=3286,suspend=n -jar wtp-service-pay-0.0.1-SNAPSHOT.jar --spring.profiles.active=test > wtp-service-pay.log 2>&1 &

b.开启jvisualVM远程监控

nohup java \

-Djava.rmi.server.hostname=121.15.xx.112 \

-Dcom.sun.management.jmxremote \

-Dcom.sun.management.jmxremote.port=9999 \

-Dcom.sun.management.jmxremote.authenticate=false \

-Dcom.sun.management.jmxremote.ssl=false \

-Dcom.sun.management.jmxremote.rmi.port=9999 \

-jar wtp-service-pay-0.0.1-SNAPSHOT.jar --spring.profiles.active=test  > wtp-service-pay.log 2>&

//同时也可以使用

org.jolokia

jolokia-core

(4)生产调优(8G内存,64位linux,JDK1.8)--压测调优结果

nohup java  \

-Xms6144m -Xmx6144m -Xmn2048M -XX:OldSize=4096M -Xss1024k \

-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m \

-XX:+UseConcMarkSweepGC \

-XX:+UseParNewGC \

-XX:+UseCMSCompactAtFullCollection \

-XX:CMSFullGCsBeforeCompaction=10 \

-XX:+CMSClassUnloadingEnabled \

-XX:+CMSParallelRemarkEnabled \

-XX:+UseCMSInitiatingOccupancyOnly \

-XX:CMSInitiatingOccupancyFraction=70 \

-Djava.rmi.server.hostname=121.xx.12.112 \

-Dcom.sun.management.jmxremote \

-Dcom.sun.management.jmxremote.port=9999 \

-Dcom.sun.management.jmxremote.authenticate=false \

-Dcom.sun.management.jmxremote.ssl=false \

-Dcom.sun.management.jmxremote.rmi.port=9999 \

-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=121.15.xx.112 :8000,suspend=n -jar $JAR_NAME --spring.profiles.active=test              >/home/app/logs/xxxxsearch-catli.out 2>&1 &

最后关于JVM说明:

-XX:PermSize=1024M 永久代大小

-XX:MaxPermSize=1024M -Xms4096M -Xmx4096M     MaxPermSize为最大永久代大小,

-Xmn1024M -XX:SurvivorRatio=8

-XX:+DisableExplicitGC 关闭程序主动调用gc

-XX:+UseConcMarkSweepGC

-XX:+UseParNewGC

-XX:+UseCMSCompactAtFullCollection 全量垃圾回收后,是否进行内存整理

-XX:CMSFullGCsBeforeCompaction=10 多少次全量垃圾回收与后进行一次内存整理

-XX:+CMSClassUnloadingEnabled 是否允许(永久代)清理

-XX:+CMSParallelRemarkEnabled 降低标记停顿

-XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCMSInitiatingOccupancyOnly指定HotSpot VM总是使用-XX:CMSInitiatingOccupancyFraction的值作为old的空间使用率限制来启动CMS垃圾回收。如果没有使用-XX:+UseCMSInitiatingOccupancyOnly,那么HotSpot VM只是利用这个值来启动第一次CMS垃圾回收,后面都是使用HotSpot VM自动计算出来的值。

-XX:CMSInitiatingOccupancyFraction=70    这个值指定了CMS垃圾回收时old代的空间占用率该是什么值。举例说明,如果你希望old代占用率是65%的时候,启动CMS垃圾回收,你可以设置-XX:CMSInitiatingOccupancyFraction=65。

-XX:TargetSurvivorRatio=90 设定survivor区的目标使用率。默认50,即survivor区对象目标使用率为50%。

-XX:MaxTenuringThreshold=20 晋升年龄最大阈值,默认15。在新生代中对象存活次数(经过YGC的次数)后仍然存活,就会晋升到老年代。每经过一次YGC,年龄加1,当survivor区的对象年龄达到TenuringThreshold时,表示该对象是长存活对象,就会直接晋升到老年代。

(5)调优中监控命令(此处未完待续)

a.命令行:jps、 jstat、jinfo、jmap、jhat、jstack

b.jdk工具(bin目录):jvisualvm.exe、jconsole.exe

(6)常见配置汇总

堆设置

-Xms:初始堆大小

-Xmx:最大堆大小

-XX:NewSize=n:设置年轻代大小

-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

-XX:MaxPermSize=n:设置持久代大小

收集器设置

-XX:+UseSerialGC:设置串行收集器

-XX:+UseParallelGC:设置并行收集器

-XX:+UseParalledlOldGC:设置并行年老代收集器

-XX:+UseConcMarkSweepGC:设置并发收集器

垃圾回收统计信息

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:filename

并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。

-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间

-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。

-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值