Files
Hui-s-notebook/203-Java/203.1-Java面试/205.13-JVM/JAVA-面试-JVM.md
2023-09-10 10:50:53 +08:00

2.4 KiB
Raw Blame History

JVM 运行机制

  1. Java 源文件被编译器编译为字节码文件
  2. JVM 将字节码文件编译为相应操作系统的机器码
  3. 机器码调用相应操作系统的本地方法库执行相应方法

JVM 后台运行线程

  • 虚拟机线程:虚拟机线程在 JVM 达到安全点时出现
  • 周期性任务线程:通过定时器调度线程来实现周期性操作的执行
  • GC 线程GC 线程支持 JVM 中不同的垃圾回收活动
  • 编译器线程:运行时将字节码动态编译成本地平台机器码,是 JVM 跨平台的具体体现
  • 信号分发线程:接收发送到 JVM 的信号并调用 JVM 方法

JVM 内存区域

线程私有

用于存储当前运行线程所执行的字节码行号指示器,执行 Native 方法则为空Undefined唯一无内存溢出问题区域

存储局部变量表操作数栈动态连接方法出口等描述Java方法的执行过程

为Native方法服务

线程共享

运行时数据区,线程共享,新生代老年代永久代

  • 方法区

  • 存储常量,静态变量,类信息,即时编译器编译后的机器码,运行时常量池

直接内存

也叫对外内存, 不是 JVM 运行时数据区的一部分NIO 模块提供对应的操作,可通过堆外内存避免 Java 堆与 Native 堆来回复制数据的性能和资源消耗,高并发场景下广泛使用

垃圾回收算法

4 种引用类型

强引用

把一个对象赋值给一个引用变量,强引用对象一定为可达性状态,不会被垃圾回收

软引用

只有在系统内存不足时会被回收

弱引用

只要垃圾回收就一定会被回收

虚引用

和应用队列联合使用,主要用于跟踪对象的垃圾回收状态,仅仅是为了被回收时获得一个通知

垃圾收集器

新生代

老年代

Garbage First,多线程标记整理算法

网络编程模型

阻塞 I/O

非阻塞 I/O

多路复用 I/O

信号驱动 I/O

异步 I/O

类加载机制