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

jvm简单八股

1、jvm中内存分为那几个区域,1.7和1.8

jvm 中主要有 程序计数器、虚拟机栈、本地方法栈、堆、方法区、直接内存。
线程私有的有:程序计数器、虚拟机栈、本地方法栈
线程共有的有:堆、方法区、直接内存
堆空间又可以分为:新时代、老年代、永久代(1.8后叫元空间);1.7的永久代使用的是jvm的内存,1.8后的元空间使用的是本地内存
新时代分为:eden,s0,s1 区其中比例为(8:1:1)

2、jvm对象的创建过程(五步)

1、类加载检查
2、内存分配
3、初始化0值
4、填充对象头(对象年龄-最大为15,对象头中只给分配了4位空间,hash值,地址)
5、执行init
对象内存分配两种方式:指针碰撞、空闲列表
对象分配原则为:1、对象优先分配在eden区,2、长期存活的进入老年代、3、大对象直接进入老年代
访问对象的两种方式:句柄和直接指针

3、垃圾相关

1、垃圾检测算法:
1、引用计数法;
2、可达性分析算法
(其中链表起始位置为:GCRoot可以为:1、方法区中类静态属性引用的对象,2、方法区中常量引用对象、3、本地方法区中引用的对象、4、虚拟机栈中引用的对象、5、所有被同步锁持有的对象)
2、垃圾回收算法:
1、标记-清除
2、标记-复制(也叫复制算法,多用于年轻代的垃圾回收算法)
3、标记整理 (多用于老年代的垃圾回收算法)
4、分代收集(Java中对象大多数存活时间是很短的)

4、引用相关

强引用 软引用 弱引用 虚引用
强引用对象:一般对象都是强引用对象,当垃圾回收时候发现空间不足不会清除,而是直接报错
软引用对象:当垃圾回收时候,空间不足时候才回去回收
弱引用对象:当垃圾回收扫描到了这个对象时候就会回收
虚引用对象:不能直接使用,要搭配引用队列《ReferenceQueue》一块使用,一般用来跟踪对象被垃圾回收的活动

垃圾回收器

1、serial 收集器(串行收集器)
2、ParNew 收集器(serial 收集器的多线程版本)
3、serial Old 收集器(单线程)
4、parallel Scavenge 收集器(吞吐量高)

上面的垃圾收集器算法:年轻代:复制算法 老年代:标记-整理算法

http://www.lqws.cn/news/539551.html

相关文章:

  • model训练中python基本数据类型的保存输出
  • 爬虫006----Scrapy框架
  • 2025-6-27-C++ 学习 模拟与高精度(7)
  • Kotlin中协程挂起函数的本质
  • SpringBoot -- 整合Junit
  • 分布式session解决方案
  • 笔记:使用EasyExcel导入csv文件出现编码问题,导致导入数据全为null的解决方法
  • Apache Kafka 面试应答指南
  • 那些不应该的优化
  • html配置rem实现页面自适应
  • Linux:从后往前查看日志命令
  • 编译原理---文法和语法分析
  • 基于全局构建版本和ES模块构建版本的vue3 快速上手
  • LLM驱动开发:正在重塑软件工程的下一场革命
  • Maven生命周期与阶段扩展深度解析
  • GO 语言学习 之 语句块
  • vscode把less文件生成css文件配置,设置生成自定义文件名称和路径
  • FlutterPackages中的animations库升级适配Flutter3.27
  • Ubuntu18.04/Mysql 5.7 建立主备模式Mysql集群
  • 华为云Flexus+DeepSeek征文|Dify平台开发搭建口腔牙科24小时在线问诊系统(AI知识库系统)
  • C++学习笔记
  • 16.3 Docker生产级部署:网络与存储高效配置实战,保障99.95%可用性
  • 387. 字符串中的第一个唯一字符
  • uni-app uts 插件 android 端 科大讯飞离线语音合成最新版
  • 修改表中满足特定条件的字段值
  • elementUI轮播图组件el-carousel适配移动端大小(图片加载好后根据大小适配)
  • 抽样分布与参数估计细节
  • 如何在安卓设备上发送长视频:6 种可行的解决方案
  • GitHub Actions与AWS OIDC实现安全的ECR/ECS自动化部署
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅