咸阳做网站的,网站 数据备份,网站建设 统一质量标准,开发公司组织架构设计1、 JVM中#xff0c;new出来的对象是在哪个区#xff1f;
2、 说说类加载有哪些步骤#xff1f;
3、 JMM是什么#xff1f;
4、 说说JVM内存结构#xff1f;
5、 MinorGC和FullGC有什么区别#xff1f;
6、 什么是STW?
7、 什么情况下会发生堆/栈溢出#xff1f…1、 JVM中new出来的对象是在哪个区
2、 说说类加载有哪些步骤
3、 JMM是什么
4、 说说JVM内存结构
5、 MinorGC和FullGC有什么区别
6、 什么是STW?
7、 什么情况下会发生堆/栈溢出
8、 你了解几种垃圾回收器简单说说
9、 垃圾回收算法你了解吗
10、 如果对象的引用被置为null会被马上回收吗 1、 JVM中new出来的对象是在哪个区
new出来的对象放在堆里对象的引用放在栈里。
2、 说说类加载有哪些步骤
类加载分三步加载、连接验证、准备和解析和初始化。
加载class文件加载到JVM内存静态变量、常量放到方法区产生Class对象。
验证验证class文件是否格式正确。
准备为静态变量分配内存并设置默认的初始值
解析将符号引用替换为直接引用 栈帧里的动态链接也有一步符号引用转变为直接引用
初始化为类的静态变量赋予正确的初始值。
3、 JMM是什么
JMM是java内存模型是一种规范与线程共享有关堆和方法区所有线程共享需要对其制定规则规范。主内存java所有变量都存储在主内存中。工作内存/线程本地内存本线程用到的变量为主存中的副本拷贝。 4、 说说JVM内存结构
共享区域堆、方法区
私有区域虚拟机栈、程序计数器、本地方法栈。
堆对象和数组、字符串常量池。
方法区常量、静态变量运行时常量池字面量和符号引用。
虚拟机栈局部变量、对象引用。
程序计数器记录线程执行位置以便下一次继续执行。
本地方法栈是一些native方法c实现 5、 MinorGC和FullGC有什么区别
MinorGC发生在年轻代当eden区满了之后会触发MinorGC.
FullGC发生在老年代它会暂停所有线程回收年轻代和老年代的对象。
6、 什么是STW?
STW(STOP THE WORLD)GC前会执行STW操作。线程进入JVM设置的“安全点”暂停所有运行中的线程stop the world然后开始GC。 7、 什么情况下会发生堆/栈溢出
递归容易发生栈溢出。 堆溢出对象一直增大不释放。 比如循环里一直list.add 8、 你了解几种垃圾回收器简单说说
Serial单线程串行回收器、Parallel并行回收器、CMS回收器、G1回收器、ZGC回收器。
Serial是年轻代串行回收器采用复制算法。
Serial Old是老年代串行回收器采用标记整理算法。
Parallel Scavenge是年轻代并行回收器采用复制算法。
Parallel Old是老年代并行回收器采用标记整理算法。
ParNew是年轻代并行回收器采用复制算法与Scavenge的区别是它能够与CMS结合。
CMS是老年代回收器采用标记清除算法特点是低停顿时间但牺牲一定的吞吐量。
G1回收器是JDK9默认的回收器废除了空间上的区域划分而是采用一个个独立的region区域组成逻辑上保留了分代策略。
ZGC是JDK11引入的回收器是一种低延迟的回收器。
9、 垃圾回收算法你了解吗
有引用计数器算法、复制算法、标记清除算法、标记整理算法。
引用计算器就是对象被别人引用时它的计数器加1引用结束就减1对象的计数器值为0就回收。
标记清除根据根节点寻找可达对象如果不可达就回收可达性分析法就是挑选一个稳定的对象作为GCROOT然后寻找可达的对象不可达就回收。
复制算法把空间分钟两块回收的时候就把未使用的复制到另一块区域然后满了就删除本区域从头到尾只使用一块空间另一块作为存放回收时未使用的部分。
标记整理算法在标记-清除算法的基础上做了一些优化。在一块内存空间内标记可达的对象压缩到内存的一边然后删除其他对象这样就不会产生内存碎片。
10、 如果对象的引用被置为null会被马上回收吗
不会在下一个垃圾回收周期中这个对象是可被回收的。