跳至主要內容
对象是如何创建出来的
本文内容

前言

在编写 Java 程序时,经常需要 new 对象,你知道 new 关键字背后的秘密吗?JVM 是如何执行 new 指令的呢?本文就带你一探究竟。

0. 概览

首先从全局的角度来看看 new 一个对象的整体过程,会经历如下几个主要步骤:

  1. 类加载检查
  2. 内存分配
  3. 初始化零值
  4. 填充对象头信息
  5. 执行构造函数<init>() 方法)。

AruNi_Lu大约 6 分钟JavaJVM
运行时数据区域
本文内容

前言

JVM 的 自动内存管理机制 帮助了我们很友好的使用内存,写 Java 代码时,不用为 new 出来的对象进行释放,JVM 会在合适的时机帮我们进行 垃圾回收

但我们还是有必要去了解一下 Java 的内存区域是怎样的,JVM 是怎样使用内存的,这样在出现内存相关的问题时,比如内存泄漏、内存溢出,才有能力去排查。

本章先来了解 Java 的 运行时数据区域 是如何划分的,每个区域分别有什么作用,保存什么数据?


AruNi_Lu大约 7 分钟JavaJVM
逃逸分析
本文内容

前言

在 Java 中,几乎所有的对象都分配在堆上,“几乎” 说明了还是有个别可以不分配到堆上的,那么到底是哪些个别对象呢?这就要涉及到本篇文章要讲的 逃逸分析 了。

1. 什么是逃逸分析?


AruNi_Lu大约 4 分钟JavaJVM
AQS 入门:简单了解
本文内容

1. 什么是 AQS

AQS 全称 AbstractQueuedSynchronizer,即抽象队列同步器,是 JUC 包下的一个 构建锁和同步器的框架

AQS 是一个抽象类,内部提供了一些使用 protected 修饰的方法,意图就是让我们自己 继承 AQS,重写这些模板方法,即可来构建自己的同步器


AruNi_Lu大约 11 分钟Java并发编程
HashMap 源码分析:数据结构
本文内容

本文来源 bugstack,加上了自己的理解!

1. 介绍

HashMap 最早出现在 JDK 1.2 中,主要用于存放键值对(key-value),底层基于散列算法实现,是 线程不安全的


AruNi_Lu大约 15 分钟Java集合
2