...
或者:输入命令行:jstack -F 7280 >test.log
二、 堆dump文件
1、同“一、线程信息”打印线程信息步骤一样,需要先进入对应的JDK的bin目录下,通过jps或netstat获取Java进程号:
...
5、该文件非常大,与Java进程的运行内存一样的大,必须压缩以后再反馈
注:反馈以上的信息有助于解决系统无响应的问题。
三、GC参数
1、在JDK的bin目录中运行【jstat -gcutil 进程号 5000 1000】
...
2、若最后一段GCT段(GC所花费的总时间)在持续快速增加则表示服务器的内存已经不足,若只是少量增加是正常现象:
Linux
一、线程信息
执行命令行生成日志:
1)另外启动一个xshell连接窗口,进入到JDK的路径下(不知道如何选择适合的JDK,可看最下边备注信息),如:
2)进入到 /app/jdk1.7.0_79/bin 目录下,并输入 jps 命令,Tomcat显示的名称Bootstrap;
...
- 在运行中打开cmd命令行窗口。
- 在cmd窗口进入JDK的bin目录下,执行jps获取进程信息,此处要保证执行的JDK是服务器使用的JDK。
- 获取对应线程号,然后执行jstack +进程号 > 进程号.log 获取线程信息 :Tomcat显示的名称应该是Bootstrap;WebLogic显示名称应该是Server
- 如果运行jps无法列出应用服务器的线程,则可以在Windows使用任务管理器,Unix上使用ps -ef|grep java命令等获取进程号,任务管理器进程号的查看方法:
- 还可以使用netstat -ano|find "访问的端口号"|find "LISTENING" 获取进程号(注意双引号是必须的)
- 再使用jstack 进程号 >进程号.log 获取线程信息,如果提示无法连接到JVM,可以增加-F参数强制生成jstack -F 进程号 >进程号.log
方法二:
...
如命令行:cd /app/jdk1.7.0_79/bin
jps
3)在窗口继续输入 jstack 7453(就是输入第二步命令获取到的tomcat的线程号),开始打印线程 (这一步也可以直接跳过进行第四步操作)
4)将线程信息输出,如输出到home 路径下,输入命令为 jstack 7453 >> /home/2.txt
这时候就会在服务器上home目录下生成对应的文件了,如下图,将这个文件发回分析。
二、堆Dump文件
1、同“一、线程信息”打印线程信息步骤一样,需要先进入对应的JDK的bin目录下,通过jps获取Java进程号 , Tomcat显示的名称应该是Bootstrap:
2、在JDK的bin目录运行【jmap -histo:live 进程号 >进程号.map】
假设获取到的进程号是7453,则输入命令行为:jmap -histo:live 7453 >7453.map
这样会在JDK的bin目录下直接生成相应文件:
3、 反馈文件以跟踪问题
4、若条件允许,生成整个堆Dump文件【jmap -dump:live,format=b,file=进程号.bin 进程号】
如输入命令行: jmap -dump:live,format=b,file=7453.bin 7453
5、该文件非常大,与Java进程的运行内存一样的大,必须压缩以后再反馈
注:反馈以上的信息有助于解决系统无响应的问题。
三、GC参数
1、在JDK的bin目录中运行【jstat -gcutil 进程号 5000 1000】
2、若最后一段GCT段(GC所花费的总时间)在持续快速增加则表示服务器的内存已经不足,若只是少量增加是正常现象: