![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 59
码小呆~
命运已做出了选择!
展开
-
深入理解JVM虚拟机:虚拟机类加载机制详细分析
类加载生命周期一个类进行加载需要经过 加载,验证,准备,解析,初始化,使用,卸载几个步骤,接下来我们来讨论JVM在这中间做来哪些事情。1. 加载通过一个类的全限名来获取此类的二进制流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的数据访问入口2.验证文件格式验证:验证字节流是否符合Class文件格式的规范是否以魔数CAFEBABE开头主次版本号是否在当前虚拟机接受范围之内常量池对常量中是否有不原创 2021-03-24 23:18:54 · 113 阅读 · 0 评论 -
利用Arthas精准定位Java应用CPU负载过高问题
最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥!以前碰到类似问题,可能会考虑使用top -Hp 加 jstack命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是Alibaba开源的Java诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://alibaba.github.io转载 2021-02-14 23:56:53 · 415 阅读 · 2 评论 -
JVM性能监控与故障处理工具:Arthas:Alibaba开源的Java诊断工具
Java与C++之间有一睹由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。Arthas(阿尔萨斯) 能为你做什么?这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重.原创 2021-02-14 23:45:24 · 361 阅读 · 1 评论 -
JVM性能监控与故障处理工具:VisualVM:多合-故障处理工具
Java与C++之间有一睹由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。VisualVM是功能最强大的运行监视和故障处理程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。1.启动VisualVM和按照插件配置了环境变量直接在控制台中jvisualvm 或者在jdk bin目录中找到 jvisualvm.exe 点击就可以打开:找到工具,插件,建议下载上面我点击到插件,可以查看gc日志分析。实例代码:/** * -Xms600m.原创 2021-02-13 15:20:50 · 158 阅读 · 2 评论 -
JVM性能监控,故障处理工具:JConsole:Java监视与管理控制台
Java与C++之间有一睹由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。JConsole是一款基于JMX的可视化监视,管理工具。他的主要功能是通过JMX的MBean对系统进行信息收集和参数动态调整。1.启动JConsole通过JDK/bin目录下的jconsole.exe 启动JConsole,或者配置了环境变量,直接在控制台上面执行 jconsole命令就会自动启动工具。选中本地进程,点击连接,不需要用户名和口令那个是远程进程才需要的点击不安全连接就可以进.原创 2021-02-13 15:04:23 · 216 阅读 · 2 评论 -
JVM性能监控,故障处理工具:jstack:Java堆栈跟踪工具,打印JVM线程快照。
Java与C++之间有一睹由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。jstack命令用于生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间挂起等原因。基本语法:-F 当正常输出的请求不被响应时,强制输出线程堆栈jstack -F 1338-l 除堆栈外,显示关于锁堆附加信息jsatck -l 1338-.原创 2021-02-13 14:39:00 · 445 阅读 · 1 评论 -
JVM性能监控,故障处理工具:jhat:虚拟机堆转储快照分析工具
JDK提供jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照文件,jhat内置来一个微型的HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器查看。jhat name.hprof上一篇jmap生成的快照文件,然后打开浏览器访问 7000端口就可以在浏览器上面查看分析结果,分析结果默认以包为单位进行分组显示,分析内存泄漏问题主要会使用到其中的OQL页签的功能(查看语句类似与sql)基本语法:-stack false|true 关闭|打开对象分配调用栈跟踪-refs fa原创 2021-02-13 14:19:01 · 175 阅读 · 0 评论 -
JVM性能监控,故障处理工具:jmap:Java内存映像,内存使用情况工具
jmap命令用于生成堆转储快照(dump)文件。还可以查询finalize执行队列,Java堆和方法区的详细信息,如空间使用率,当前用的是那种收集器等。基本语法:-dump生成java堆快照-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法堆对象-heap显示Java堆详细信息,如使用那种垃圾回收器,参数配置,分代状况等-histo显示堆中等对象统计信息,包括类,实例数量,合计容量-permstat以Classlode原创 2021-02-13 13:59:40 · 206 阅读 · 2 评论 -
JVM性能监控,故障处理工具:jinfo实时查看和调整JVM参数
jinfo 到作用是实时查看和调整JVM虚拟机各项参数。基本语法:查看虚拟机参数:-sysprops 可以查看由System.getProperties取得的参数jinfo -sysprops 959-flags 查看曾经赋过值的一些参数jinfo -flags 959-flag 查看某个java进程的具体参数的值jinfo -flag 959调整:针对boolean类型的:jinfo -flag [+]具体参数 PID针对非boolean类型jinfo -fla原创 2021-02-13 13:31:12 · 186 阅读 · 0 评论 -
JVM性能监控,故障处理工具:jstat虚拟机统计信息监视工具
jstat是用于监视虚拟机各种运行状态信息的命令行工具。他可以显示本地或者远程虚拟机进程中的类加载,内存,垃圾收集,即时编译等运行时数据。实例代码:public class ScannerTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String info = scanner.next(); }}启动后,使用上篇等j原创 2021-02-13 13:05:16 · 158 阅读 · 1 评论 -
JVM性能监控,故障处理工具:jps 虚拟机进程状况工具
给一个系统定位问题的时候,知识,经验是关键基础,数据是依据,这里说的数据不限于异常队栈,虚拟机运行日志,垃圾收集日志等虚拟机中等一切发生过程等数据都可以作为定位问题的数据,今天来说说虚拟机中的 jps工具,他的功能与unix中的ps命令类似,来看看他的介绍可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID 。直接使用jsp命令查看当前进程可以看到默认是可以看到进程id和对于到类名的接下来我们来看看jps原创 2021-02-13 12:21:55 · 238 阅读 · 0 评论