当前位置: 首页 > news >正文

[java] 图文示八股

图文示八股

JVM

JVM内存模型

存储
存储
子区域
JVM内存模型
线程共享区域
线程私有区域
方法区
程序计数器: 指向当前执行的字节码地址, 线程切换后会恢复
虚拟机栈: 存放运行时栈信息
本地方法栈: 调用native方法如c/c++时使用
对象实例和数组
垃圾回收GC主要区域
类信息,常量,静态变量,JIT编译后的代码
运行时常量池

栈和堆区别

栈:

  • 线程私有,线程安全
  • 每个线程创建时分配独立的栈
  • 存储函数方法执行时的栈帧
  • 自动管理,与作用域绑定
  • 后进先出,无内存碎片问题

堆:

  • 线程共享,非线程安全
  • JVM启动时创建,整个JVM进程只有一个堆
  • 存储对象实例和数组
  • 垃圾回收器GC管理
  • 可能有内存碎片问题

Java对象结构

  • 对象头
  • 实例数据,涉及字段重排:基本类型优先 long/doulble > int/float > short/char > boolean/byte > 引用类型;父类字段 > 子类字段
  • 对齐填充:对象大小必须是8字节的倍数

判断对象可以被回收

通过 “可达性分析算法” 判断对象是否能关联到根对象;不可达对象进入回收候选队列,若未通过finalize()自救,且无特殊引用保护,则最终会被 GC 回收。

强引用:Java默认,只要存在就不会回收

软引用(SoftReference):内存不足时才会回收,适合缓存;

弱引用(WeakReference):下次 GC 时必然回收,适合临时关联;

虚引用(PhantomReference):仅用于跟踪对象回收过程,无法通过虚引用获取对象。

垃圾回收算法

标记-清除算法
  1. 标记: 从GC Roots开始,标记所有可以访问的对象
  2. 清除: 遍历整个堆,释放未被标记的对象

优点: 实现简单
缺点: 内存碎片,遍历整个堆效率低

标记-复制算法
  1. 将堆内存划分为两个大小相等的区域(如 From 区和 To 区),只使用其中一个区域(From 区);
  2. 标记: 标记 From 区中所有可达对象
  3. 复制: 将所有标记对象复制到 To 区,并更新引用
  4. 清空 From 区,交换 From 和 To 区的角色

优点: 避免内存碎片,效率高
缺点: 内存利用率低:堆内存只能使用一半

标记-整理算法
  1. 标记: 与 “标记-清除” 相同,标记所有可达对象
  2. 将所有可达对象向堆内存的一端移动,集中排列,然后直接清理边界外的所有内存(未标记对象)

优点:解决内存碎片,效率比 “标记-复制” 高
缺点:移动对象,比 “标记-清除” 效率低

分代收集算法

核心思想:基于 “对象存活周期不同” 的观察(大部分对象存活时间短,少数对象存活时间长),将堆内存划分为新生代和老年代,针对不同代采用不同算法:

新生代:对象存活率低,用标记-复制算法(高效且无碎片)

老年代:对象存活率高,用标记-清除或标记-整理算法(避免频繁复制的高成本)

几乎所有现代 JVM(如 HotSpot)的默认回收策略(如 CMS、G1、ZGC 等均基于分代思想优化)

http://www.dtcms.com/a/520285.html

相关文章:

  • 【图像处理】图像形态学操作
  • 网站上传 空间 数据库开发一个电商平台app要多少钱
  • 如何制作网站链接数字镭网站开发
  • 使用python的matplotlib进行绘图
  • Nginx使用auth_request模块做外部认证集成Kibana
  • 【题解】洛谷 P2218 [HAOI2007] 覆盖问题 [二分 + 思维]
  • xss-labs pass-12
  • 企业网站建设服务电话做网站什么主题好做
  • 注册电气工程师(供配电)执业资格考试专业考试规范及设计手册(2025版)
  • 关于zwg技术的深度解析与应用前景
  • linux 什么做网站好网站优化课程培训
  • 键盘PCB为何对板厂要求更高?差异、难点及猎板解决方案解析
  • OMSDK WebView Display 接入步骤
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十S四)储存服务-NFS文件储存
  • tidex-数字货币交易所
  • C#使用OpenVinoSharp+魔塔社区的读光中英文OCR ONNX模型进行文字检测(仅检测不做识别)
  • 积分商城小程序深圳seo网络优化公司
  • [Linux文件系统——Lesson17.软硬链接]
  • apr库在x86架构下交叉编译成arm64架构
  • 软件设计师-结构化分析方法-耦合
  • 响应式企业网站 下载网站制作是不是要先用ps做
  • 购买网站建设需要注意app软件开发制作公司电话
  • 【AI Agent】入门、学习、求职
  • C++中const与引用深度解析:从使用到底层原理
  • Product Hunt 每日热榜 | 2025-10-23
  • 【大话码游之 Observation 传说】上集:月光宝盒里的计数玄机
  • raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞
  • 2025年中专机电一体化专业做什么工作?
  • JavaWeb 全栈学习路径:从工具到项目的实战蜕变指南
  • 中国工信备案查询网站做网站的软件电子