jvm
文章平均质量分 58
jvm
daidavid_csdn
java开发
展开
-
Arthas基本命令使用
Arthas是Alibaba在2018年9月开源的Java诊断工具,支持JDK6+,采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。 下载arthas-boot.jar工具包,java jar 运行,启动后,可以识别机器上所有的Java进程,如下: [root@pre248 arthas]# java -jar arthas-boot.jar [INFO] arthas-boot version: 3.4.5 [INFO] Found existing java proce...原创 2021-12-09 15:39:26 · 4040 阅读 · 0 评论 -
JVM类加载机制
类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。 通过Java命令执行代码的大体流程如下: 其中loadClass的类加载过程有如下几步: 加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载 加载:在硬盘上查找并通过IO读取字节码文件,使用到类时才会加载,例如调用类的main方法、new对象等,在加载阶段会在内存中生成一个代表这个原创 2021-09-29 20:31:39 · 1438 阅读 · 0 评论 -
JVM调优实战场景二,死锁
死锁(Dead Lock):两个或以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出。 1、模拟异常代码,开启两个线程,互相等待对方释放资源。sleep(2000)保证,两个线程第一时间能成功持有各自的第一个对象锁。 private static Object lock1 = new Object(); private static Object lock2 = new Object(); /** * 线程互相等待对方释原创 2021-09-05 20:49:34 · 2162 阅读 · 0 评论 -
JVM调优实战场景一,CPU飙升100%
1、CPU异常高 异常代码如下: @RestController public class IndexController { private static boolean process=true; @RequestMapping("/user/cpu") public String cpu() throws InterruptedException { while(process){ add(3,4); }原创 2021-09-05 20:06:07 · 2518 阅读 · 0 评论