java共193篇

面试题:什么情况下会触发 Java 的 Full GC?

在Java中,Full GC指的是对整个堆(包括年轻代、老年代和永久代/元空间)进行垃圾回收的过程。触发Full GC的情况有多种,以下是一些常见的触发条件: 1. 老年代空间不足 当老年代没有足够的空间...
程序百科的头像-程序百科程序百科1年前
5315

面试题:Java 线程安全的集合有哪些?

在Java中,线程安全的集合类主要分为两类:传统线程安全集合和现代并发集合。以下是常见的线程安全集合及其特点: 1. 传统线程安全集合 这些集合通过 synchronized 关键字或全局锁实...
程序百科的头像-程序百科程序百科1年前
5310

面试题:为什么 G1 垃圾收集器不维护年轻代到老年代的记忆集?

G1垃圾收集器的设计初衷是为了高效管理大堆内存,同时提供可预测的停顿时间。 为了实现这些目标,G1引入了分区(Region)的概念,并且在不同代之间使用记忆集(Remembered Set, RS)来跟踪跨代...
程序百科的头像-程序百科程序百科1年前
5310

面试题:Java 中 HashMap 的扩容机制是怎样的?

在 Java 中,HashMap 的扩容机制是为了在键值对数量增加时,动态调整数组容量以减少哈希冲突并保持高效的查询和插入性能。以下是其核心原理和流程的详细解析: 1. 扩容触发条件 当 Ha...
程序百科的头像-程序百科程序百科1年前
5210

面试题:Java 中的参数传递是按值还是按引用?

在 Java 中,参数传递机制可以概括为“按值传递”(Pass by Value)。这意味着当一个方法被调用时,实际参数的值会被复制给形式参数。然而,理解这一点的关键在于区分基本数据类型和对象引用如...
程序百科的头像-程序百科程序百科1年前
5114

面试题:Java 中包装类型和基本类型的区别是什么?

在 Java 中,基本类型(Primitive Types)和包装类型(Wrapper Classes)都用于存储数值数据,但它们之间存在一些关键的区别。以下是基本类型与对应的包装类型的对比及其主要区别: 基本类型 定...
程序百科的头像-程序百科程序百科1年前
519

面试题:Java 中 volatile 关键字的作用是什么?

volatile 是 Java 中的一个关键字,用于声明变量可以在程序的其他部分被修改,尤其是在多线程环境下。它的主要作用是保证变量的可见性和禁止指令重排序优化,但不会提供原子性操作。下面详细解...
程序百科的头像-程序百科程序百科1年前
5113

面试题:你了解 Java 的 ZGC(Z Garbage Collector)吗?

ZGC,全称Z Garbage Collector,是自Java 11引入的一种可扩展的低延迟垃圾收集器。它的设计目标主要是为了满足大堆内存(多TB级别)的需求,同时保持非常低的停顿时间(通常在几毫秒内),从而...
程序百科的头像-程序百科程序百科1年前
5110

面试题: 为什么在 Java 中需要使用 ThreadLocal?

在Java中,ThreadLocal 提供了一种线程局部变量的机制,这意味着每个使用某 ThreadLocal 变量的线程都有自己独立初始化的副本。这种机制有几个关键的应用场景和优势,解释了为什么在某些情况下...
程序百科的头像-程序百科程序百科1年前
519

面试题:Java 的 CopyOnWriteArrayList 和 Collections.synchronizedList 有什么区别?分别有什么优缺点?

CopyOnWriteArrayList 和 Collections.synchronizedList() 都是 Java 中用于实现线程安全的列表操作的方式,但它们的工作机制、适用场景和性能特点有着显著的不同。以下是两者的...
程序百科的头像-程序百科程序百科1年前
517