青云博客 记录、分享

CPU百分百问题如何排查

排查CPU百分百问题通常需要一步一步地识别并解决潜在的原因。以下是一些常见的排查步骤: 查看系统负载:首先,使用系统监控工具比如top查看系统的负载情况。 确定是哪个进程导致CPU高占用:查找哪个进

詹学伟 Published on 2024-04-22

对象一定分配在堆中吗

不一定,对象还可以分配在栈上,对象栈上分配通常是指将对象引用分配到方法调用栈上,而不是在堆内存中分配对象的实例数据。这种分配方式主要涉及基于逃逸分析的优化技术。 逃逸分析是Java虚拟机的一种优化技术,用于分析对象的生命周期和作用域。如果分析表明某个对象的引用不会逃逸到方法调用栈之外,即不会被其他线

詹学伟 Published on 2024-04-22

如何判断对象可以被回收

在Java中,对象是否可以被回收通常由垃圾回收器决定。垃圾回收器使用一种称为"可达性分析"的算法来确定对象是否可被回收。可达性分析是指如果一个对象无法从任何GC Roots直接或间接访问到,它就被认为是不可达的,可以被垃圾回收。

詹学伟 Published on 2024-04-22

内存溢出与内存泄漏的区别

内存溢出和内存泄漏都是与内存管理相关的问题,但它们有不同的表现和发生原因。 内存溢出是指程序尝试分配更多内存空间,而可用内存已经用尽,因此无法满足分配的请求。它通常发生在程序执行期间,例如创建新对象或递归调用时,需要分配内存,但没有足够的内存可供分配。内存溢出通常导致程序崩溃或抛出OutOfMemo

詹学伟 Published on 2024-04-22

说说对象分配规则

在Java中,对象分配规则是关于如何为新对象分配内存的一套规则,以确保内存的有效使用和对象的正确初始化。以下是关于对象分配的主要规则: 内存分配

詹学伟 Published on 2024-04-22

你怎么理解常量池

常量池是Java编程语言中的一个重要概念,它是一种用于存储常量值、符号引用和字面量的数据结构,主要用于提高代码的效率和减少内存消耗。对于类级别的常量池,它存储在类文件class

詹学伟 Published on 2024-04-22

判断线程池任务执行完成的方式

Thread线程是否执行完成,我们可以调用join方法然后等待线程执行完成;那在使用线程池的时候,我们如何知道线程已经执行完成了?本文就带给大家五种判断的方式: isTerminated() 方式,在执行 shutdown() ,关闭线程池后,判断是否所有任务已经完成。 ThreadPoolExec

zhanxuewei zhanxuewei Published on 2024-04-22

如何优化线程池的性能

要优化线程池的性能,需要根据实际情况进行参数配置。以下是一些优化建议: 根据应用场景和任务性质,合理设置核心线程数(corePoolSize)和最大线程数(maximumPoolSize)。如果任务主要是IO密集型的,核心线程数可以设置为CPU核心数的两倍左右,最大线程数可以设置为CPU核心数的四倍

zhanxuewei zhanxuewei Published on 2024-04-22

如何理解阻塞、非阻塞与同步、异步的区别?

同步与异步 同步与异步关注的是消息通信机制。 所谓同步

zhanxuewei zhanxuewei Published on 2024-04-22

线程池的底层工作原理

线程池是一种用于管理和重用线程的机制,其底层工作原理涉及线程的创建、调度、执行以及回收等关键过程。线程池的底层工作原理可以分为以下几个关键步骤: 线程池的创建: 在使用线程池之前,需要首先创建一个线程池。通常,线程池会根据配置参数(如核心线程数、最大线程数、队列类型等)来初始化线程池的基本属性。 任

zhanxuewei zhanxuewei Published on 2024-04-22
Previous Next