面试-JVM
面试-JVM
JVM内存分析,解释下堆和栈
问:JVM内存分析,解释下堆和栈
答:JVM内存结构主要分为堆内存、方法区和栈。
1. 堆内存是JVM中最大的一块内存地址。所有new出来的对象都存储在该区域。
2. 栈就是暂存数据的地方,栈中只保存基础数据类型的对象和自定义对象的引用,每个栈中的数据都是私有的,其它栈不能访问。
3. 方法区存放了要加载的类的信息如类名、修饰符、静态变量、构造函数等
类加载机制
问:类加载机制
答:
1. 加载:找到.class文件把文件的二进制字节流读进内存
2. 验证:保证加载的字节码是合法、安全、符合JVM规范的
3. 准备:为类的静态变量分配内存,并设置默认初始值
4. 解析:把符号引用替换成直接内存地址引用
5. 初始化:执行类构造器
类的初始化过程
问:类的初始化过程
答:加载Class文件进内存,为静态变量分配内存并赋值,执行静态代码块。
对象的初始化过程
问:对象的初始化过程
答:分配内存并为成员变量赋默认值,执行成员变量赋值和构造代码块,最后执行构造方法。
父类加子类初始化过程
问:父类加子类初始化过程
答:
1. 父类静态变量 + 静态代码块
2. 子类静态变量 + 静态代码块
3. 父类成员变量 + 构造代码块 + 父类构造方法
4. 子类成员变量 + 构造代码块 + 子类构造方法
对象什么时候可以被垃圾器回收
问:对象什么时候可以被垃圾器回收
答:如果一个或多个对象没有任何引用指向它了,那么这个对象现在就是垃圾,则有可能会被垃圾回收器回收。对象与所有 GC Roots 之间没有任何引用链的会被回收。
JVM垃圾回收算法有哪些
问:JVM垃圾回收算法有哪些
答:
1. 标记清除算法:根据可达性分析算法得出的垃圾进行标记,对这些标记为可回收的内容进行垃圾回收。
2. 标记整理算法:和标记清除算法一样,将存活对象都向内存另一端移动,然后清理边界以外的垃圾。
3. 复制算法:将原有的内存空间一分为二,每次只用其中的一块,正在使用的对象复制到另一个内存空间中,然后将内存空间清空,交换两个内存角色,完成垃圾的回收。
JVM有哪些垃圾回收器
问:JVM有哪些垃圾回收器
答:
1. 串行垃圾收集器
2. 并行垃圾收集器(默认垃圾回收器)
3. GMS并发垃圾收集器
4. G1垃圾收集器
CPU飙高排查方案与思路
问:CPU飙高排查方案与思路
答:使用top命令查看占用CPU情况并拿到进程ID,然后再查看进程中的线程占用CPU信息,并拿到占用较高线程的ID,再根据线程ID找到有问题代码的源码行号。
