JVM
JVM内存模型介绍
分为5大部分:虚拟机栈、堆、元空间、程序计数器、本地方法栈
虚拟机栈:储存栈帧的位置,
本地方法栈:用于调用计算机的方法。
程序计数器:记录程序返回的位置和执行到什么地方。
堆:多个线程共同享有变量的地方
元空间:使用计算机内存空间的一块地方
栈和堆的区别
堆储存的是全局的变量,栈储存的是局部的方法变量
生存周期:栈的数据具有特定的生命周期,会在结束后被销毁,而堆由于垃圾回收机而导致不确定。
储存速度。栈的速度更快 空间大小:栈的空间更稳定
栈中存的到底是指针还是对象?
栈储存的不是对象,而是一个指向堆的对象位置的对象引用。
堆分为哪几部分呢?
新生代,老生代。2个区别是在于其数据的生存周期不同。元空间储存的是储存类的原数据,其在内存中。大对象区。

程序计数器介绍,以及为什么是私有的
当线程切换时为了去记住之前的状态,每一个线程需要一个自己私有的程序计数器。
方法区执行方法的流程
1.解析方法调用
2.将方法加入到栈帧中
3.去执行方法
4.返回方法
方法区有哪些东西

String保存在哪

介绍强引用等引用类型
体现在gc垃圾回收时会不会被回收


弱引用的使用场景
- 缓存 2. 防止内存泄漏(一个对象长期在对象中不被引用) 3. 对象池
内存泄漏和内存溢出的理解
指数据被不被使用的对象引用,导致gc无法去处理,而导致内存不断增加
常见:线程,监听的事件,静态的集合
内存溢出:指申请内存空间时,内存大小无法满足而引发错误。
常见:大的数据量,递归调用,持久引用
常见有哪几种的内存溢出
堆溢出,栈溢出,元空间溢出,直接内存溢出
1.静态资源过多 2.使用了线程 3.使用了threadlocal
创建对象的过程
1.类加载 2.分配内存 3.初始化0值 4。进行必要设置,比如设置头 5.执行init方法
对象的生命周期
创建,使用,销毁
双亲委派模型


作用:
保证了类的唯一性,所有的类都会被加载到启动类加载器中,保证安全性,支持隔离和层级划分。
类加载过程
加载--连接(验证,准备,解析)-初始化-使用-卸载

讲述什么是双亲委派模型和类加载过程

垃圾回收
1.什么是垃圾缓存
GC是用于释放内存的操作。内存大小不足时,手动请求,某个值达到阈值时。
如和判断是否是垃圾
1.引用计数法,缺点,2个对象循环引用无法正常释放
2.可达性分析算法:

垃圾回收算法是什么,解决了什么问题

垃圾回收算法有什么


各自垃圾回收算法的优缺点比较



浙公网安备 33010602011771号