JVM探究
- 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?
- 什么是OOM,什么是栈溢出StackOverFlowError?怎么分析?
- JVM的常用调优参数有哪些?
- 内存快照如何抓取,怎么分析Dump文件?知道吗?
- 谈谈JVM中,类加载器你的认识?
1.JVM的位置
- JRE包含JVM(用C编写的)
2.JVM的体系结构
只有堆和方法区(特殊的堆)中会产生垃圾,所说的JVM调优百分之99都是在堆和方法区中进行调优!
3.类加载器
作用:加载Class文件~
1.启动类(根)加载器BootstrapClassLoader
2.扩展类加载器ExtClassLoader
3.系统类加载器AppClassLoader
4.用户自定义类加载器CustomClassLoader
4.双亲委派机制
1.APP-->EXC-->BOOT(最终执行)
类加载器收到类加载的请求
将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载(Boot)
启动加载器检查是否能够加载当前这个类,能加载就结束了使用当前加载器,否则,抛出异常,通知子加载器进行加载
重复上一个步骤
Class Not Found
null:java调用不到~C,C++
JAVA=C++--(去掉了指针和内存管理)
5.沙箱安全机制
沙箱安全机制
6.Native
会进入本地方法栈
调用本地方法本地接口 JNI
JNI作用:扩展Java的使用,融合不同的编程语言为JAVA所用!
它在内存区域专门开辟了一块标记区域:Native Method Stack 登记native方法
只要是有native关键字的,说明java的作用范围达不到了,回去调用底层c语言的库!
7.PC寄存器
PC寄存器( PC register ):每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。保存下一条