JVM内存整理
jvm 内存模型
大致分为堆和栈,内存共享有方法区和堆,线程私有虚拟机栈和本地方法栈,以及程序计数器
堆主要存放对象实例,方法区主要存放类信息,常量,静态变量及时编译后的代码
虚拟机栈,主要 局部变量表,操作数栈,动态链接和方法出口
何为GC
GC指内存回收
判断对象是否可回收
1引用计数法
如果对象之间相互引用,无法判断
2可达性分析算法
即对象无法达到gc root
如何逃逸,重写finalize方法,重新引用,finalize方法系统只能调用一次
哪些对象可作为gc root
栈(虚拟机栈引用的对象和本地方法栈引用的对象)
堆(方法区中类静态属性引用的对象和常量引用的对象)
Safe Point 主要指的是以下特定位置:
- 循环的末尾
- 方法返回前
- 调用方法的 call 之后
- 抛出异常的位置 另外需要注意的是由于新生代的特点(大部分对象经过 Minor GC后会消亡), Minor GC 用的是复制算法,而在老生代由于对象比较多,占用的空间较大,使用复制算法会有较大开销(复制算法在对象存活率较高时要进行多次复制操作,同时浪费一半空间)所以根据老生代特点,在老年代进行的 GC 一般采用的是标记整理法来进行回收。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现