项目启动脚本如下:
#!/bin/bash
source /etc/profile
nohup java -server -Xmx4g -Xms4g -XX:+UseG1GC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:./gclog/gc.log
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./gc.hprof
-XX:+DisableExplicitGC -Dspring.profiles.active=beijing
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
-jar analysis.jar >/dev/null 2>&1 &
echo $! > lryhis.pid
echo "启动完毕,当前的pid是${!}"
1、-XX:+UseG1GC:使用G1收集器
2、-XX:+PrintGCDetails :打印GC详细信息
3、-XX:+PrintGCTimeStamps :输出GC的时间戳(以JVM启动到当期的总时长的时间戳形式)
4、-XX:+PrintGCDateStamps :输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
5、-XX:+PrintHeapAtGC :在进行GC的前后打印出堆的信息
6、-Xloggc:./gclog/gc.log :指定GC log的位置,以文件输出帮助开发人员分析问题
7、-XX:+HeapDumpOnOutOfMemoryError :当堆内存空间溢出时输出堆的内存快照。
8、-XX:HeapDumpPath=./gc.hprof :用来设置堆内存快照的存储文件路径,默认是 java 进程启动位置。
9、-XX:+DisableExplicitGC :如果jvm参数中设置了-XX:+DisableExplicitGC,那么代码中手动调用System.gc()就不会生效。而有些框架中因为是使用的堆外内存,必须手动调用System.gc()来释放。如果禁用掉就会导致堆外内存使用一直增长,造成内存泄露。
10、-Dspring.profiles.active=beijing :参数设置被直接以-Dspring.profiles.active=dev追加到了 java命令之后,是以虚拟机参数进行设置
11、-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 :IDEA连接远程环境进行本地debug