自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 ThreadLocal源码分析

ThreadLocal源代码分析

2024-06-12 11:41:22 1668

原创 JVM之GC篇:(二)垃圾回收算法

本文我们将介绍几种常见的垃圾回收算法,了解它们的优缺点,并尝试在这些算法上进行改进得到更好的GC算法。

2024-06-07 21:32:48 738

原创 Java对象引用关系之软引用

JDK 1.2后,Java一共存在四种引用关系,分别是强引用、软引用、弱引用和虚引用。其中强引用是最常见的引用,代表程序运行所必须存在的引用,而软引用是非必须品,通常用于本地缓存。当我们在程序中使用时产生的就是一个强引用,强引用代表的程序的运行必须使用使用该对象,因此被强引用的对象不能被GC回收。而软引用不像强引用一样是必须品,当内存充足时,软引用会被保留,当内存紧张时,会优先回收无任何引用的对象,然后再考虑回收软引用。

2024-06-06 23:51:10 861

原创 JVM之GC篇:(一)引用计数与可达性分析

GC的第一步就是要判断出哪些对象需要被回收。显然易见的是,当一个对象不再被使用后,那么就需要对其进行回收。那么问题就是,如何判断对象是否被使用?本文将介绍两种算法来判断对象是否需要被回收。

2024-06-06 22:28:01 539

原创 JVM运行时数据区域与本地内存概述

JVM在运行时会有一块专用的内存空间,称之为运行时数据区域。本文通过对这块内存区域的各个部分进行讲解,从而加深对于JVM的理解。运行时数据区可分为两大类,一类是所有线程共享的区域,包含方法区和堆;另一类是每个线程私有的,包含程序计数器(Program Counter,PC)、虚拟机栈和本地方法(native method)栈。

2024-06-05 15:37:14 2262

原创 深入理解类加载器

类加载器(ClassLoader)的作用就是将字节码文件加载到内存,以供后续使用。它的应用场景包括SPI机制、热部署、Tomcat隔离等等,学习类加载器是深入掌握Java必不可少的环节之一。类加载器可以分为两类,一类是底层的由JVM提供的类加载器,其负载加载Java自带的类,例如String,Integer等等;另一类是JDK提供的类,这一类是Java程序员需要重点关注的,有时我们需要继承这些类去实现一些定制的类加载器。

2024-05-30 17:19:43 281

原创 深入理解类的生命周期

类的生命周期指的是一个字节码文件(*.class)从被JVM加载到卸载的全过程。深入学习类的生命周期有助于更好地理解我们所写的Java代码,能够分析其运行时的行为。本文中我们重点关注加载、连接以及初始化三个阶段,尤其是初始化阶段可以被程序员干预,使得我们对程序有了更多的控制权。

2024-05-29 22:09:38 1920

原创 深入理解字节码文件

字节码文件是将Java源代码文件(*.java)编译后得到的产物(*.class),由JVM负责将其解释为机器码并运行。或许你会好奇,字节码文件中到底有什么呢?字节码文件中包含了基本信息、常量池、字段、方法以及属性,我们着重关注基本信息、常量池和方法部分,字段和属性比较好理解,不做额外阐述。

2024-05-26 18:39:43 1055

原创 初识JVM

JVM的功能、组成部分及其作用的简单介绍。

2024-05-26 16:21:34 337

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除