一、 JDK运行内存调整:
- JDK7
-Djdk.tls.ephemeralDHKeySize=2048 -server -Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxNewSize=600m -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent
- JDK8
JAVA_OPTS="-Xms1024m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m"
- TOMCAT调整(Windows):
catalina.bat:
SET CATALINA_OPTS=-server -Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxNewSize=600m -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent
- TOMCAT调整(Linux):
catalina.sh:
CATALINA_OPTS="-server -Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxNewSize=600m -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent"
二、远程调试设置
- TOMCAT设置(Windows):
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8788
- TOMCAT设置(Linux):
declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8788"
三、工具使用
-
jps
列出JAVA程序路径jps -l
-
GC信息查看
jstat -gc PID 周期 总计数
列出PID进程为2764的统计信息, 每隔250ms统计一次, 共统计20次jstat -gc 2764 250 20 :
-
jinfo
jinfo PID
显示JAVA进程的JVM配置信息 -
jstack
jstack -l PID
显示进程的所有线程堆栈信息 -
jmap
查看堆使用情况: jmap -heap pid
查看堆中对象数量和大小: jmap -histo pid
注意: 如果加上live子参数的话, 会触发一次FUll GC: jmap -histo:live pid
打印等待终结的对象信息:jmap -finalizerinfo pid
打印类加载器信息: jmap -clstats pid
(名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印)
四、故障分析
1. 获取CPU和内存占用最多的程序
- linux下获取占用CPU资源最多的10个进程,可以使用如下命令:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
- 获取占用内存资源最多的10个进程,可以使用如下命令:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
- 获取占用最多线程数的进程, 输出至1.txt文本中:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu > 1.txt
2. CPU 100%高占用定位分析
- 通过top命令, 找出最占cpu的进程
- 分析进程内部最占CPU的线程:
top -Hp pid 或 top -p pid-H
- 将PID转换成对应的16进制
printf '%x\n' PID
- 使用jstack定位线程栈信息:
jstack 8958 | grep 5c7e
3. 获取DUMP日志文件
- jmap获取:
jmap -dump:format=b,file=/usr/local/test_jvm.dump PID
- 发生内存溢出时自动导出DUMP文件:
追加参数, 指定路径:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./
来源:CSDN
作者:随空-mirson
链接:https://blog.csdn.net/hxx688/article/details/103594696