青云博客 记录、分享

双亲委派

要了解"双亲委派"机制,首先需要知道"类的加载机制" 一、类的加载机制 我们自己写的 java 源文件到最终运行,必须经过编译和类加载两个阶段: 编译的过程就是把.java 文件编译成.class 文件。 类加载的过程,就是把 class 文件装载到 JVM 内存中,装载完成以后就会得到一个 Cla

詹学伟 Published on 2024-06-22

如何分析GC日志的堆栈信息?

GC日志通常包含大量关于垃圾收集器活动的详细信息,包括GC事件的类型、持续时间、内存占用情况等。以下是一些常见的信息和术语,以帮助你理解GC日志: 1. GC类型: - Full GC:表示进行完整的垃圾收集,包括新生代和老年代。 - Young GC(年轻代GC):只清理新生代。 - Mixed

詹学伟 Published on 2024-06-09

JVM垃圾回收器种类及使用场景

垃圾回收器在 Java 虚拟机中有多种类型,每种类型都有不同的特点和适用场景。以下是常见的垃圾回收器类型以及其使用场景: 一、串行垃圾回收器 (Serial Garbage Collector): 特点:单线程执行垃圾回收操作,暂停应用程序执行。 适用场景:适用于单核 CPU 或小型应用程序,对系统

詹学伟 Published on 2024-06-09

JVM常用启动参数及配置依据

一、内存相关参数(核心配置) 1. 堆内存 -Xms512m # 初始堆大小(默认物理内存的1/64) -Xmx2g # 最大堆大小(默认物理内存的1/4) -Xmn1g # 新生代大小(建议为堆的1/3~1/2) -XX:NewRatio=2 # 老年代与新生代的比例(2表示老年代:新生代=2:1

詹学伟 Published on 2024-06-09

查看GC频率的几种方式

说明:当前文章是基于在JDK8环境下 方法1:通过GC日志分析 JVM参数已包含GC日志配置: -XX:+PrintGCDetails -Xloggc:/app/gcmp/java/script/logs/coi/gc.log 查看日志文件: tail -f /app/gcmp/java/scrip

詹学伟 Published on 2024-06-09

如何优化线程池的参数设置

优化线程池的参数设置可以根据实际需求和场景来进行调整。以下是一些优化线程池参数设置的建议: 核心线程数(corePoolSize)的设置:根据任务的类型和负载情况,合理设置核心线程数。如果任务是CPU密集型的,可以设置核心线程数与CPU核心数相等,以充分利用CPU资源。如果任务是I/O密集型的,可以

詹学伟 Published on 2024-04-24

JVM 内存为什么要分新生代、老年代、元空间?

JVM之所以将内存划分为新生代、老年代和元空间,是为了实现更有效的垃圾回收和提高Java应用程序的性能。这种内存分代的策略基于以下考虑: 对象生命周期不同: 大多数对象在被创建后不久就会变得不可达,因此它们的生命周期很短。 但也有一些对象具有较长的生命周期,它们可能在应用程序的整个生命周期内存在。

詹学伟 Published on 2024-04-23

什么是指针碰撞

在Java中,指针碰撞是一种垃圾收集算法中用于分配内存的一种方式。它通常用于实现停顿时间较短的垃圾收集器,如复制算法和标记-清除算法。 指针碰撞的基本思想是将堆内存分为两个区域:一个是已分配的对象区域,另一个是未分配的空闲区域。通过一个指针来分隔这两个区域。当需要分配对象时,垃圾收集器将对象的大小与

詹学伟 Published on 2024-04-22

什么是三色标记(2)?

1.前言 三色标记算法,用于垃圾回收器升级,将STW变为并发标记。STW就是在标记垃圾的时候,必须暂停程序,而使用并发标记,就是程序一边运行,一边标记垃圾。 2. 三色标记算法 2.1.什么是三色: 首先我们需要知道三色标记法就是根据可达性分析

詹学伟 Published on 2024-04-22

什么是安全点

安全点(Safe Point)是指在Java程序执行过程中的某个特定位置,此时所有线程都处于安全状态,即没有执行关键的代码片段,如循环、方法调用等。在安全点上,垃圾回收器可以安全地进行垃圾回收操作,而不会对正在执行的线程产生影响。 为了进行垃圾回收,垃圾回收器需要暂停所有线程的执行,以便检查和回收不

詹学伟 Published on 2024-04-22
Previous Next