java共193篇

面试题:JVM 有那几种情况会产生 OOM(内存溢出)?

Java虚拟机(JVM)在运行过程中可能会遇到多种原因导致的内存溢出(OutOfMemoryError,简称OOM)。以下是几种常见的OOM情况及其产生原因: Java堆空间不足(Java heap space): 当创建对象时,...
程序百科的头像-程序百科程序百科6个月前
3315

面试题:Java 的类加载过程是怎样的?

Java 类的加载过程是由 Java 虚拟机(JVM)负责执行的,主要分为加载、链接(验证、准备、解析)、初始化这几个步骤。下面详细介绍每个阶段的内容: 1. 加载(Loading) 在加载阶段,JVM 需要完...
程序百科的头像-程序百科程序百科6个月前
3213

面试题:说说 Java 的执行流程?

好的,我们来详细说说 Java 程序的执行流程。Java 程序的执行流程可以概括为以下几个关键步骤: 1. 编写源代码 (Writing Source Code) 操作:开发者使用文本编辑器或集成开发环境(IDE)编写 Ja...
程序百科的头像-程序百科程序百科6个月前
327

面试题:Java 是如何实现跨平台的?

Java实现跨平台的关键在于其“编写一次,到处运行”(Write Once, Run Anywhere)的设计理念。这一特性主要依赖于以下几个核心技术点: 1. Java虚拟机(JVM) 字节码与JVM:Java源代码首先被编...
程序百科的头像-程序百科程序百科6个月前
329

面试题: ConcurrentHashMap 和 Hashtable 的区别是什么?

ConcurrentHashMap 和 Hashtable 都是 Java 中线程安全的哈希表实现,但它们在实现机制、性能以及使用场景方面存在显著差异。以下是它们的主要区别: 1. 实现方式和锁粒度 Hasht...
程序百科的头像-程序百科程序百科6个月前
326

面试题:Java 中的 CMS 和 G1 垃圾收集器如何维持并发的正确性?

CMS(Concurrent Mark-Sweep)和 G1(Garbage First)垃圾收集器在Java中通过不同的机制来维持并发操作的正确性,即确保在应用程序线程与垃圾收集器线程同时运行时不会导致数据不一致或错误。 ...
程序百科的头像-程序百科程序百科6个月前
328

面试题:Java 中 String、StringBuffer 和 StringBuilder 的区别是什么?

在 Java 中,String、StringBuffer 和 StringBuilder 都是用来处理字符串的类,但它们之间有一些关键的区别,主要体现在可变性、线程安全和性能方面。 String 不可变性:String 类的对象一旦创...
程序百科的头像-程序百科程序百科6个月前
3111

面试题:Java 中的 DelayQueue 和 ScheduledThreadPool 有什么区别?

在 Java 中,DelayQueue 和 ScheduledThreadPoolExecutor 都是用于处理延迟任务的工具,但它们的设计目的、使用方式和内部实现都有显著的区别。下面将详细介绍这两者的不同之处。 DelayQueue De...
程序百科的头像-程序百科程序百科6个月前
315

面试题: Synchronized 能不能禁止指令重排序?

在 Java 中,Synchronized 关键字主要用于确保线程安全,它通过提供可见性和原子性来保证共享资源的正确访问。 关于 Synchronized 是否能禁止指令重排序,我们需要从 Java 内存模型(JMM, Java ...
程序百科的头像-程序百科程序百科6个月前
319

面试题:什么是 Java 的 happens-before 规则?

在Java中,happens-before 规则是Java内存模型(JMM, Java Memory Model)的一部分,用于定义程序中操作之间的部分有序关系,确保多线程环境下的可见性和顺序性。 通过这些规则,程序员可以确定...
程序百科的头像-程序百科程序百科6个月前
3113