Jvm学习
文章平均质量分 97
hd20086996
啊啊啊啊
展开
-
JVM垃圾回收(二)
JVM垃圾回收(二)垃圾回收调优1. 触发时机1.1 Young GC的触发时机1.2 Old GC和Full GC的触发时机1.3 对象进入老年代区域中几种情况1.4 常见的频繁Full GC的原因:1.5 手动dump文件生成1.6 试验一:自己模拟出JVM Metaspace内存溢出1.7 试验二:模拟出JVM栈内存溢出的场景1.8 试验三:模拟出堆内存溢出的场景1.9 案例一:中小公司级别的JVM参数模板1.10 案例二:线上频繁full gc1.11 案例三垃圾回收调优1. 触发时机原创 2021-03-12 19:18:05 · 461 阅读 · 0 评论 -
JVM垃圾回收(一)
目标如何判断对象可以回收:1. 引用计数法:2. 可达性分析(根搜索)算法:3. 哪些对象可以作为 GC Root ?4. 五种引用垃圾回收算法1 标记+清除2 标记+整理3 复制4 分代垃圾回收机制垃圾回收器1. 串行Serial2. 吞吐量优先ParallelGC3. 响应时间优先CMS(JDK9中被废弃)4. G14.1 G1 垃圾回收阶段4.2 Young Collection4.3 Young Collection + CM4.4 Mixed Collection4.5 Full GC垃圾回收原创 2020-10-15 20:14:12 · 516 阅读 · 0 评论 -
java类加载器
类加载器是负责加载类的一个对象,ClassLoader是一个抽象类。最常见的加载策略是根据的类的全名,然后找到这个类的class文件,然后从文件读取这个类的数据加载到JVM。每个类都能通过getClassLoader方法获取加载这个类的类加载器。数组类的类对象不是由类加载器创建的,而是根据Java运行时的需要自动创建的。 Class#getClassLoader()返回的数组类的类加载器与其元素...转载 2020-04-16 23:38:55 · 113 阅读 · 0 评论 -
Java虚拟机类加载机制
虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的类加载的过程类的个生命周期如下图:为支持运行时绑定,解析过程在某些情况下可在初始化之后再开始,除解析过程外的其他加载过程必须按照如图顺序开始。加载通过全限...原创 2020-04-16 21:12:10 · 124 阅读 · 0 评论 -
JAVA字节码文件分析(一)
Java不只是一种编程语言,还是一个完整的操作平台。Java之所以可以跨平台,这离不开JVM虚拟机。JVM是一个软件,在不同的平台上,JVM有不同的版本。Java在编译之后会生成一种.class文件,这种文件成为字节码文件。JVM虚拟机就是将Java编译后的.class文件翻译成特定平台下的机器码,然后运行。也就是说,在不同平台上装上平台对应的JVM虚拟机后,就可以将Java字节码文件转...原创 2020-04-09 12:00:39 · 512 阅读 · 1 评论 -
17-21堆(线程共享)
堆内存17_堆_定义18_堆_内存溢出19_堆_内存诊断_jmap20_堆_内存诊断_jconsole21_堆_内存诊断_jvirsualvm17_堆_定义定义: Heap,通过new关键字创建的对象,都存放在堆内存中。特点:线程共享,堆中的对象都存在线程安全的问题垃圾回收,垃圾回收机制重点区域。18_堆_内存溢出一个简单的例子 java.lang.OutOfMemeryError:...原创 2020-04-06 15:00:34 · 209 阅读 · 0 评论 -
16_本地方法栈
标题16_本地方法栈本地方法栈类似于虚拟机栈,也是线程私有。1、本地方法栈(Native Method Stacks)与 Java 虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的 Native 方法服务。虚拟机规范中对本地方法栈中的方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由...原创 2020-04-06 13:03:42 · 149 阅读 · 0 评论 -
15、线程诊断_迟迟得不到结果
15_线程诊断_迟迟得不到结果jstack pid 查看进程中各线程的详细信息,拉到最后,发现死锁问题。查看线程详细信息后,发现问题出现在JAVA程序内29和21行。分析程序可知,两个线程各自都想锁住两个对象,且开始都各自锁住一个不同的对象,两个线程都无法获得另一个对象,造成死锁。...原创 2020-04-06 12:53:15 · 109 阅读 · 0 评论 -
14、线程诊断_cpu占用高
标题14、线程诊断_cpu占用高cpu占用过多1、定位进程,top找出占用cpu过多的进程PID2、. ps -H -eo pid,tip,%cpu | grep PID,找出该进程下占用过大的线程 TID例:32655进程中,32665线程占用cup过高3、 jstack pid查看进程中各线程的详细信息,可以看出问题所在。注意:这里TID为十六进制,TID转换为16进制。jst...原创 2020-04-06 12:40:44 · 252 阅读 · 0 评论