Day19 2021.4.5
JVM入门
- 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?
- 什么事OOM,什么事栈溢出StackOverFlowError?怎么分析
- JVM的常用调优参数有哪些?
- 内存快照如何抓取,怎么分析Dump文件?知道吗?
- 谈谈JVM中,类加载器你的认识
1.JVM的位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oNfDxLE2-1617606415829)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210405131515251.png)]
2.JVM的体系结构
所谓的JVM调优就是在调方法区和堆
三种JVM
- HotSpot
- JRockit
- J9VM
程序计数器
内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成
如果线程正在执行一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这个计数器的值则为 (Undefined)。此内存区域是唯一一个在 Java 虚拟机规范中没有规定任何 OutOfMemoryError 情况的区域。
3.类加载器
作用是加载class文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ugDNY7sf-1617606415831)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210405132822146.png)]
1.虚拟器自带的加载器
2.启动类(根)加载器
3.扩展类加载器
4.应用程序加载器
public class Demo01 {
public int age;
public static void main(String[] args) {
//类是加载,对象是具体的
Demo01 demo1 = new Demo01();
Demo01 demo2 = new Demo01();
Demo01 demo3 = new Demo01();
System.out