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

JVM八股文精简

目录

  • 简述JVM类加载过程
  • 简述JVM中的类加载器
  • 简述双亲委派机制
  • 双亲委派机制的优点
  • 简述JVM内存模型
  • 简述程序计数器
  • 简述虚拟机栈
  • 简述本地方法栈
  • 简述JVM中的堆
  • 简述方法区
  • 简述运行时常量池
  • 简述Java创建对象的过程
  • 简述JVM给对象分配内存的策略
  • Java对象内存分配是如何保证线程安全的
  • 如何判断对象是否是垃圾
  • 简述java的引用类型
  • 简述标记清除算法、标记整理算法和标记复制算法
  • 简述分代收集算法
  • 简述Serial垃圾收集器
  • 简述ParNew垃圾收集器
  • 简述Parallel Scavenge垃圾收集器
  • 简述CMS垃圾收集器
  • 简述G1垃圾收集器
  • 简述MinorGC
  • 简述Ful GC
  • 常见内存分配策略
  • JVM常见调优参数

简述JVM类加载过程

1)加载:

  • 通过全类名获取类的二进制字节流。
  • 将类的静态存储结构转化为方法区的运行时数据结构
  • 在内存中生成类的Class对象,作为方法区数据的入口

2)验证:对文件格式,元数据,字节码,符号引用等验证正确性

3)准备:在方法区内为类变量分配内存并设置为0值。

4)解析:将符号引用转化为直接引用

5)初始化:执行类构造器clinit方法,真正初始化。

简述JVM中的类加载器

  • BootstrapClassLoader启动类加载器:加载/lib下的jar包和类。由C++编写。
  • ExtensionClassLoader扩展类加载器:/lib/ext目录下的jar包和类。由Java编写。
  • AppClassLoader应用类加载器:加载当前classPath下的jar包和类。由Java编写。

简述双亲委派机制

某个类加载器收到类加载请求之后,首先判断当前类是否被加载过。已经被加载的类会直接返回,如果没有被加载,首先将类加载请求转发给父类加载器,一直转发到启动类加载器只有当父类加载器无法完成时才尝试自己加载。
加载类顺序:
BootstrapClassLoader->ExtensionClassLoader->AppClassLoader->
CustomClassLoader
检查类是否加载顺序:CustomClassLoader->AppClassLoader->
ExtensionClassLoader->BootstrapClassLoader

双亲委派机制的优点

  • 避免类的重复加载。相同的类被不同的类加载器加载会产生不同的类,双亲委派保证了Java程序的稳定运行。
  • 保证核心API不被修改

简述JVM内存模型

线程私有的运行时数据区:程序计数器、Java 虚拟机栈、本地方法栈。
线程共享的运行时数据区:Java 堆、方法区。

简述程序计数器

程序计数器表示当前线程所执行的字节码的行号指示器。
程序计数器不会产生StackOverflowError和OutOfMemoryError。

简述虚拟机栈

Java 虚拟机栈用来描述 Java 方法执行的内存模型。线程创建时就会分配一个栈空间,线程结束后栈空间被回收。

栈中元

http://www.lryc.cn/news/497700.html

相关文章:

  • 深入解析CMake中的find_package()命令:工作原理及实际应用示例
  • 使用数据层进行数据生命周期管理
  • Kubernetes架构原则和对象设计
  • 响应式编程一、Reactor核心
  • uniapp+vue3+ts请求接口封装
  • 【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN
  • 基于Matlab BP神经网络的电力负荷预测模型研究与实现
  • java 21 多线程
  • Rust学习笔记_07——枚举和范围
  • 40分钟学 Go 语言高并发:服务性能调优实战
  • Windows通过指令查看已安装的驱动
  • Windows 11 如何配置node.js
  • AWTK fscript 中的 串口 扩展函数
  • yolov11剪枝
  • 智慧地图聚合(LockMap)标注系统开发说明文档
  • 「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
  • cuda12.1版本的pytorch环境安装记录,并添加到jupyter和pycharm中
  • Linux: network: nic: mellanox MRU初现
  • 深入理解红黑树的底层逻辑
  • 【数据结构】手搓链表
  • ThinkPHP场景动态验证
  • 在M3上面搭建一套lnmp环境
  • 【C++笔记】二叉搜索树
  • Fork/Join框架简介
  • Java项目实战II基于微信小程序的电子竞技信息交流平台的设计与实现(开发文档+数据库+源码)
  • Mysql读写分离分库分表
  • B站狂神说--springboot项目学习(新建一个springboot项目)
  • eltable el-table 横向 滚动条常显
  • centos8 mysql 主从复制
  • 【C++】入门【五】