问题
- 谈谈对JVM的理解?java8虚拟机和之前的变化更新
- 什么是OOM,什么是栈溢出StackOverFlowError?怎么分析?
- JVM常用的调优参数有哪些?
- 内存快照如何抓取,怎么分析Dump文件?
- 谈谈JVM中你对类加载器的认识?
1、JVM的位置
2、JVM的体系结构
3、类加载器
作用:加载Class文件
1、虚拟机自带的加载器
2、启动类(根)加载器
3、拓展类加载器
4、应用程序加载器
public class Car {public static void main(String[] args) {Car car1 = new Car();Car car2 = new Car();Car car3 = new Car();//得到Car的模板,三个对象得到的是同样的模板Class<? extends Car> car1Class = car1.getClass();//car的模板System.out.println(car1Class);//得到应用程序加载器AppClassLoader,java.lang.ClassLoaderSystem.out.println(car1Class.getClassLoader());//得到拓展类加载器ExtClassLoader,jre/lib/extSystem.out.println(car1Class.getClassLoader().getParent());//null,获取不到,rt.jarSystem.out.println(car1Class.getClassLoader().getParent().getParent());}}
4、双亲委派机制(面试高频)
package java.lang;public class String {//双亲委派机制:保证安全//程序类加载器->拓展类加载器->根加载器//程序执行时,会首先在根加载器中寻找这个类,找不到//再逐渐往下层去找 根加载器->拓展类加载器->程序类加载器public String toString(){return "hello";}public static void main(String[] args) {String s = new String();s.toString();}}
5、沙箱安全机制
6、Native
7、PC寄存器
8、方法区
9、栈
10、三种JVM
11、堆
12、新生区、老年区
13、永久区
14、堆内存调优
15、GC(常用算法)
16、JMM
