当前位置: 首页 > 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 收集器(吞吐量高)

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

相关文章:

  • BERT架构详解
  • Spring Boot项目开发实战销售管理系统——系统设计!
  • 23种设计模式——单例模式的暗黑面
  • 常用的语义分割数据集标注格式
  • 三分钟学会利用deepseek将复杂信息转换成可视化图表
  • element-plus table合并列、合计行、表格填报添加验证
  • Spring Boot 2.2.6调用DeepSeek API并通过SSE将流式响应推送给前端的完整实现
  • vue-27(实践练习:将现有组件重构为使用组合式 API)
  • fish安装node.js环境
  • Spring Boot 性能优化与最佳实践
  • [论文阅读] 人工智能 | 机器学习系统构思新方法:Define-ML 解决传统 ideation 痛点
  • RabbitMQ 消费幂等性与消息重放实现
  • 车联网网络安全渗透测试:深度解析与实践
  • 机器学习中为什么要用混合精度训练
  • 学习设计模式《十五》——模板方法模式
  • sql server 将nvarchar长度设置成max有什么隐患
  • 2025暑期学习计划​参考
  • 【C语言】知识总结·指针篇
  • 鸿蒙 List 组件解析:从基础列表到高性能界面开发指南
  • TCP/IP协议简要概述