配置visualvm需要注意的问题:
1,JDK的选择问题:
注意安装开发版的jdk
development:这个版本的才有bin和jre
running time 这个版本的只有jre(选择这个版本的会有些命令找不到,如jstatd)
(详见jdk章节)
2,不能开防火墙,否则会地动了也访问不了,全关就是全部允许(或者把要开的端口都开了)
3,自己新建的脚本
#!/bin/shexport 要独立成行不能和内容在一起
#!/bin/shexport
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx512m -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
4,使用本地的visualvm连接远程:
1,跑起来了后,工具中装插件(一次不行多来几次)
安好那个插件就是有这个功能tab,至于如这个界面又需要什么jar包,再另行在tab中配置,比如jconsole的使用
jtop.jar之后重启,在看tomcat,此时不在提示配置而是提示jmx不能用,换一个用户(controlRole(添加jmx)),之后新加jstatd出现的tomcatjconson可用
不同的插件只能用不同的身份登录看到的插件功能不同
2,jmx连通了也需要装丰富的插件
3,安装好后重启
4,每次重启(visual vm)后jstatd要重新启动,这是监听的端口会变,需要重新在jstatd设置
重新
cd $JAVA_HOME/bin
./jstatd -J-Djava.security.policy=all.policy &
netstat -anp | grep *jstatd
加好jstatd监听后,tomcat自动出来(上述命令执行好后,启动visualvm自动加入jstatd-tomcat)
5,tomcat设置开启oom生成dump(jmap的时候也是生成dump)
开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.
gdb -c core文件路径 [应用程序的路径]
进去后输入where回车, 就可以显示程序在哪一行当掉的, 在哪个函数中.
有时候程序down了, 但是core文件却没有生成. core文件的生成跟你当前系统的环境设置有关系, 可以用下面的语句设置一下, 然后再运行程序便成生成core文件.core文件生成的位置一般于运行程序的路径相同, 文件名一般为core.进程号