JVisualVM对内存线程的分析使用
来源:互联网 发布:没有网站怎么做seo 编辑:程序博客网 时间:2024/05/22 03:07
简介
JVisualVM是jdk自带的工具在jdk的安装目录的bin目录下,直接双击就能运行
点击运行后,能自动监视到 tomcat 、idea、eclipse等工具的进程
安装gc 线程插件
jvm内存模型一目了然
监测远程服务器
启动RMI服务
在需要被监控的服务器上面,通过jstatd来启动RMI服务
首先,配置java安全访问,在服务器jdk路径(/java_home/bin)下新建文件
名称: jstatd.all.policy
内容:
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};
然后在进入jstatd.all.policy所在目录下,通过如下的命令启动RMI服务:
./jstatd -J-Djava.security.policy=jstatd.all.policy
或者
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.22.11
修改服务器 hosts 文件中的 IP 地址
要使Java VisualVM 成功连接到远程服务器上,服务器端应该在 /etc/hosts 文件中把本机地址设为本机的 IP 地址。使用 hostname -i 命令查看,如果显示的是 127.0.0.1 或者与本机实际 IP 不一致的话,需要把 /etc/hosts 文件中相应的地址改为本机实际 IP 。
运行 jstatd 守护程序
由于 jstatd 需要保持一直运行,所以建议使用 screen 命令执行 jstatd 程序,命令如下:
Java代码 收藏代码
screen jstatd -J-Djava.security.policy=jstatd.all.policy
如果需要RMI 日志功能的话,还可以在启动参数中加入 -J-Djava.rmi.server.logCalls=true 。
screen jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true
jstatd开始运行后,使用 CTRL+A+D 断开 screen 界面,回到 shell 界面。如果想切换回 jstatd 运行界面的话,使用 screen -r -d 命令即可。
监测远程tomcat
1、修改catalina.sh,在 tomcat 的 catalina.sh 中添加如下参数
JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'
説明
注:1. -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
2. -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl
3. -Dcom.sun.management.jmxremote.authenticate=false 指定了JMX 是否启用鉴权(需要用户名,密码鉴权)
2,3两个是固定配置,是 JMX 的远程服务权限的
4. -Djava.rmi.server.hostname :这个是配置 server 的 IP 的
最后可以监测到tomcat
- JVisualVM对内存线程的分析使用
- C对内存的使用
- C++对象对内存的使用
- C++对象对内存的使用
- LINUX对内存的管理和使用
- 限制容器对内存的使用
- C++对内存的使用管理
- 使用Jvisualvm监控线程死锁案例分析
- 对内存的认识
- 对内存的理解
- 对内存的思考
- 对内存的优化
- c编译器对内存的划分和使用
- 通过实例谈C#对象对内存的使用
- JAVA对内存的使用和垃圾回收
- JAVA对内存的使用和垃圾回收
- Linux内核对内存的管理和使用
- Python3 - 对内存的使用--深拷贝,浅拷贝
- Java提高篇——对象克隆(复制)
- golang cache 源码学习
- 卷积与反卷积动图
- Linux下修改rm命令,防止误删
- MySQL left join操作中 on与where放置条件的区别
- JVisualVM对内存线程的分析使用
- 关系运算符:or、and的优先级问题
- 转载:微信的智能心跳方案
- Tool-gitlab的使用方法
- 插件化开发—动态加载技术加载已安装和未安装的apk
- React-Native之禁用Navigator默认的右滑手势返回上一页
- jQuery ajax——ajax()方法的参数
- js中的事件委托或是事件代理详解
- 不用搭环境的10分钟AngularJS指令简易入门01(含例子)