JDK内存管理工具收集
来源:互联网 发布:混凝土强度试验数据 编辑:程序博客网 时间:2024/05/22 12:01
JVM虚拟机可分析文件如下:
异常堆栈
GC日志
线程快照(threaddump/javacore文件)
堆转储快照(heapdump/hprof文件)
注意:分析dump文件的工具:
Eclipse MemoryAnalyzer、
IBM HeapAnalyzer [2]、
VisualVM
1、jps (JVM Process Status Tools)显示系统中所有HotSpot虚拟机进程
2、jstat (JVM Statistics Monitoring Tool)用于收集HotSpot虚拟机各方面的运行数据
3、jinfo (Configuration Info For Java)显示虚拟机配置信息
4、jmap(Memory Map For Java)生成虚拟机内存转储快照(heapdump文件)
5、jhat (JVM Heap Dump Brower)
用于分析heapdump文件(对应jmap),分析完后会建立一个HTTP/HTML 服务器,让用户可以在浏览器中查看分析结果,例如: eclipse.bin是dump文件
分析完成之后,通过浏览器访问分析结果:http://localhost:7000
分析内存泄漏问题主要会使用到其中
的“Heap Histogram”(与jmap-histo功能一样)与OQL页签的功能
6、jstack(Stack Trace For Java)
该命名用于生成虚拟机当前时刻的线程快照(一般城市threaddump或者javacore文件);
线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合;
分析线程快照的主要目的:
1)定位线程出现长时间停顿的原因(如:线程间死锁,死循环,请求外部资源导致线程长时间等待等等是导致线程长时间停顿的常见原因);
案例说明:
使用案例:
第一步:jps -v 获取进车id
第二步:jstack -ml pid 1>/data/logs/test.core输出core文件
第三步:ps -T -ppid查看某个进程中的线程
7、VisualVM工具
注意:
在JDK 1.5之后,在Client模式下的虚拟机加入并且自动开启了类共享——这是一
个在多虚拟机进程中共享rt.jar中类数据以提高加载速度和节省内存的优化,而根据相关Bug
报告的反映,VisualVM的Profiler功能可能会因为类共享而导致被监视的应用程序崩溃,所以
读者进行Profiling前,最好在被监视程序中使用-Xshare:off参数来关闭类共享优化。
插件下载地址:
https://visualvm.github.io/archive/uc/8u40/updates.html
Linux tomcat8配置jmx:
1.编辑tomcat/bin/catalina.sh找到如下位置:
在Execute The Requested Command前加入如下代码:
CATALINA_OPTS="$CATALINA_OPTS-Djava.rmi.server.hostname=10.12.116.135 -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8088-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=true"
2.编辑jmxremote.access和jmxremote.password
进入系统安装jdk目录,例如:文件默认在该目录下:/data/jdk1.8.0_45/jre/lib/management
cpjmxremote.password.template jmxremote.password
Vim jmxremote.password
修改内容如下:
编辑最后的账户密码,去掉注释,密码改下别用默认的:
#Following are two commented-out entries. The "measureRole" role has
# password "QED". The"controlRole" role has password "R&D".
#
monitorRole QEDworld
controlRole R&Dhello
把文件改为运行tomcat 的用户,如果已经是,则不需要修改
修改文件权限600,这是Java的规范,防止别的用户看到你密码
命名:chmod600 jmxremote.access jmxremote.password
3. 重新启动 tomcat
VisualVM通过JMX访问远程连接不了的问题,关闭防火墙即可解决。
原因如下:
虽然已经对主监听端口设置了允许访问,但是随机端口号是Java进程启动后,OS随机分配给jmxserver的,如果不关闭防火墙,就必须在每次server就绪后,检测一下随机端口,然后设置为允许访问。
第一步:lsof -i:port插线监听该端口的进程号,也就是需要监听的java进程号
第二步:lsof -i|grep pid 查看jmx自动分配的监听端口
第三步:将jmx自动分配的端口添加到防火墙中(或者直接关闭防火墙)
- JDK内存管理工具收集
- JDK内存管理工具
- linux剪贴板管理工具收集
- SQLite管理工具收集
- JDK密钥证书管理工具keystore
- VC中的内存管理工具
- android内存管理工具类
- android 内存管理工具 DDMS
- Android 内存管理工具
- ios使用内存管理工具
- Valgrind内存管理工具
- jdk源码分析(四)——垃圾收集器与内存分配策略
- JDK中的证书生成和管理工具keytool
- JDK 中的证书生成和管理工具 keytool
- Android eclipse内存管理工具 内存泄露定位
- 内存泄露或内存管理工具和方法
- 【错误收集】JDK的安装
- 内存知识收集。
- Mybatis 框架文档 超详细笔记
- 代理池使用,python的简单队列实现
- Servlet容器与Web容器
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
- js练习
- JDK内存管理工具收集
- gradle插件buildship
- 模仿HttpSession自定义Session并且使用Redis支持共享,能完美接入负载均衡
- 机器学习实战(1)
- 1.6 spring 4.3.10 JAR 官网下载
- 调用class_create(),class_device_create()函数编译报错的解决方法
- Android插件化基础篇 — dex 文件
- 共享单车重新定义了“地铁房”?
- Android——区别DVM与JVM