随笔分类 -  面试题

常见面试题,当备忘录查看
摘要:Java 的逃逸分析 1. 定义 逃逸分析(Escape Analysis)是 JVM 的一种优化技术,用于分析对象的作用域,从而决定对象的分配方式或优化手段。 主要目的是判断一个对象是否会逃离当前方法或线程的作用域。 2. 逃逸分析的类型 2.1 方法逃逸 如果对象被方法外的代码引用,则该对象发生 阅读全文
posted @ 2024-12-11 00:38 Eiffelzero 阅读(201) 评论(0) 推荐(0) 编辑
摘要:Java 的 AOT(Ahead-Of-Time) 1. 定义 AOT(Ahead-Of-Time)编译是与 JIT(Just-In-Time)相对的一种编译方式。 在 AOT 模式下,Java 字节码(Bytecode)在程序运行之前,就被提前编译为目标平台的本地机器代码。 AOT 编译器:一个工 阅读全文
posted @ 2024-12-11 00:18 Eiffelzero 阅读(337) 评论(0) 推荐(0) 编辑
摘要:JIT 编译后的代码存储位置 1. 存储位置 JIT 编译后的本地机器代码被存储在 JVM 的 Code Cache(代码缓存区)中。 Code Cache 是 JVM 内存的一部分,用于保存 JIT 编译生成的机器码,避免重复编译和提高代码执行效率。 2. Code Cache 的特性 作用: 存 阅读全文
posted @ 2024-12-10 23:55 Eiffelzero 阅读(81) 评论(0) 推荐(0) 编辑
摘要:Java 中的 JIT(Just-In-Time)编译器 1. JIT 的定义 JIT(Just-In-Time)编译器是一种用于 Java 虚拟机(JVM)的动态编译技术。它在 Java 程序运行时,将 Java 字节码(Bytecode)转换为本地机器代码,从而提高程序的运行效率。 位置:JIT 阅读全文
posted @ 2024-12-10 23:06 Eiffelzero 阅读(332) 评论(0) 推荐(0) 编辑
摘要:Java 类加载器(ClassLoader) Java 中的类加载器是用于加载 .class 文件到 JVM 中的组件,它的核心作用是将字节码(.class 文件)加载到内存,并且使它能够被 JVM 执行。类加载器决定了类的加载顺序和加载方式,是 Java 应用程序在运行时执行的重要部分。 1. 类 阅读全文
posted @ 2024-12-10 22:39 Eiffelzero 阅读(29) 评论(0) 推荐(0) 编辑
摘要:Java 中的字符串常量池和运行时常量池 1. 字符串常量池(String Constant Pool) 定义 字符串常量池是 JVM 内存中专门用于存储字符串字面量和通过 intern() 方法加入的字符串对象的区域。它的目的是避免重复创建相同的字符串对象,以节省内存,并提高性能。 如何工作 每当 阅读全文
posted @ 2024-12-10 22:22 Eiffelzero 阅读(187) 评论(0) 推荐(0) 编辑
摘要:Java 中的常量池 Java 中的常量池(Constant Pool)是用于存放程序中常量(如字符串、数字、类、方法等)的内存区域。常量池的主要作用是提高内存的使用效率和性能,避免重复创建相同的常量实例。 常量池主要分为两种类型: 1. 字符串常量池(String Constant Pool) 定 阅读全文
posted @ 2024-12-10 22:09 Eiffelzero 阅读(81) 评论(0) 推荐(0) 编辑
摘要:Java 中的直接内存(堆外内存) 在 Java 中,直接内存(Direct Memory)指的是不受 JVM 堆管理的内存区域,也称为堆外内存。直接内存的使用通常与 Java NIO(New I/O)相关,尤其是通过 ByteBuffer.allocateDirect() 方法分配的内存。 1. 阅读全文
posted @ 2024-12-10 22:00 Eiffelzero 阅读(206) 评论(0) 推荐(0) 编辑
摘要:Java 中堆和栈的区别 Java 中的堆(Heap)和栈(Stack)是两种不同的内存区域,它们有着不同的用途和特点。以下是它们的主要区别: 1. 存储内容 堆:用于存储对象实例以及类的实例变量。所有通过 new 关键字创建的对象都会分配在堆中。 栈:用于存储方法调用时的局部变量和方法的执行上下文 阅读全文
posted @ 2024-12-10 21:51 Eiffelzero 阅读(127) 评论(0) 推荐(0) 编辑
摘要:JVM 有哪些情况会产生 OOM(内存溢出)? JVM 的内存溢出(OutOfMemoryError, OOM)是指程序在运行过程中,JVM 无法从操作系统申请到足够的内存,导致程序抛出内存溢出异常。OOM 可能发生在不同的内存区域,以下是常见的几种情况: 1. Java 堆内存溢出 发生原因 对象 阅读全文
posted @ 2024-12-10 21:44 Eiffelzero 阅读(114) 评论(0) 推荐(0) 编辑
摘要:JVM 方法区是否会出现内存溢出? 方法区内存溢出的可能性 方法区是 JVM 内存中的一个重要组成部分,存储类的元信息、静态变量和运行时常量池等。尽管它是一个独立的内存区域,但如果内存使用过多,也可能导致内存溢出(OutOfMemoryError)。 1. 原因 以下情况可能导致方法区发生内存溢出: 阅读全文
posted @ 2024-12-10 19:16 Eiffelzero 阅读(55) 评论(0) 推荐(0) 编辑
摘要:JVM 的内存区域划分 JVM 在运行时会将内存划分为多个区域,用于管理程序运行时的不同类型数据。以下是 JVM 内存的主要划分: 1. 方法区(Method Area) 定义: 方法区是运行时数据区的一部分,用于存储类的元信息(元数据)以及与类相关的常量。 存储内容: 类的元信息(类名、访问修饰符 阅读全文
posted @ 2024-12-10 19:07 Eiffelzero 阅读(137) 评论(0) 推荐(0) 编辑
摘要:编译执行与解释执行的区别 1. 编译执行(Compiled Execution) 定义: 将源代码一次性翻译为机器码(目标代码),生成可直接运行的二进制文件。 特点: 翻译只发生一次,生成的目标代码可以直接运行。 运行时速度快,因为无需再次翻译。 依赖于编译平台,目标代码可能需要为不同的硬件或操作系 阅读全文
posted @ 2024-12-10 18:57 Eiffelzero 阅读(116) 评论(0) 推荐(0) 编辑
摘要:JVM 的组成 JVM(Java Virtual Machine)是 Java 的核心组件,负责执行 Java 字节码程序。以下是 JVM 的主要组成部分: 1. 类加载子系统(Class Loader Subsystem) 作用:负责加载 .class 文件到 JVM,将其转换为 JVM 能识别的 阅读全文
posted @ 2024-12-10 18:43 Eiffelzero 阅读(22) 评论(0) 推荐(0) 编辑
摘要:JVM 的 TLAB(Thread-Local Allocation Buffer)是什么? TLAB(Thread-Local Allocation Buffer)简介 TLAB(Thread-Local Allocation Buffer) 是 JVM 中堆内存管理的一种优化技术,用于减少多线程 阅读全文
posted @ 2024-12-10 18:36 Eiffelzero 阅读(99) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示