JVM

JVM内存模型介绍

分为5大部分:虚拟机栈、堆、元空间、程序计数器、本地方法栈
虚拟机栈:储存栈帧的位置,
本地方法栈:用于调用计算机的方法。
程序计数器:记录程序返回的位置和执行到什么地方。
堆:多个线程共同享有变量的地方
元空间:使用计算机内存空间的一块地方

栈和堆的区别

堆储存的是全局的变量,栈储存的是局部的方法变量
生存周期:栈的数据具有特定的生命周期,会在结束后被销毁,而堆由于垃圾回收机而导致不确定。
储存速度。栈的速度更快 空间大小:栈的空间更稳定

栈中存的到底是指针还是对象?

栈储存的不是对象,而是一个指向堆的对象位置的对象引用。

堆分为哪几部分呢?

新生代,老生代。2个区别是在于其数据的生存周期不同。元空间储存的是储存类的原数据,其在内存中。大对象区。
alt text

程序计数器介绍,以及为什么是私有的

当线程切换时为了去记住之前的状态,每一个线程需要一个自己私有的程序计数器。

方法区执行方法的流程

1.解析方法调用
2.将方法加入到栈帧中
3.去执行方法
4.返回方法

方法区有哪些东西

alt text

String保存在哪

alt text

介绍强引用等引用类型

体现在gc垃圾回收时会不会被回收
alt text
alt text

弱引用的使用场景

  1. 缓存 2. 防止内存泄漏(一个对象长期在对象中不被引用) 3. 对象池

内存泄漏和内存溢出的理解

指数据被不被使用的对象引用,导致gc无法去处理,而导致内存不断增加
常见:线程,监听的事件,静态的集合

内存溢出:指申请内存空间时,内存大小无法满足而引发错误。
常见:大的数据量,递归调用,持久引用

常见有哪几种的内存溢出

堆溢出,栈溢出,元空间溢出,直接内存溢出
1.静态资源过多 2.使用了线程 3.使用了threadlocal

创建对象的过程

1.类加载 2.分配内存 3.初始化0值 4。进行必要设置,比如设置头 5.执行init方法

对象的生命周期

创建,使用,销毁

双亲委派模型

alt text
alt text
作用:
保证了类的唯一性,所有的类都会被加载到启动类加载器中,保证安全性,支持隔离和层级划分。

类加载过程

加载--连接(验证,准备,解析)-初始化-使用-卸载
alt text

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

alt text

垃圾回收

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

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

alt text

垃圾回收算法有什么

alt text
alt text

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

alt text
alt text

posted @ 2025-03-12 21:28    阅读(17)  评论(0)    收藏  举报