大约 6 分钟
本文内容
前言
在编写 Java 程序时,经常需要 new 对象,你知道 new 关键字背后的秘密吗?JVM 是如何执行 new 指令的呢?本文就带你一探究竟。
0. 概览
首先从全局的角度来看看 new 一个对象的整体过程,会经历如下几个主要步骤:
- 类加载检查;
- 内存分配;
- 初始化零值;
- 填充对象头信息;
- 执行构造函数(
<init>()
方法)。
大约 6 分钟
本文内容
前言
JVM 的 自动内存管理机制 帮助了我们很友好的使用内存,写 Java 代码时,不用为 new 出来的对象进行释放,JVM 会在合适的时机帮我们进行 垃圾回收。
但我们还是有必要去了解一下 Java 的内存区域是怎样的,JVM 是怎样使用内存的,这样在出现内存相关的问题时,比如内存泄漏、内存溢出,才有能力去排查。
本章先来了解 Java 的 运行时数据区域 是如何划分的,每个区域分别有什么作用,保存什么数据?
大约 7 分钟
本文内容
前言
在 Java 中,几乎所有的对象都分配在堆上,“几乎” 说明了还是有个别可以不分配到堆上的,那么到底是哪些个别对象呢?这就要涉及到本篇文章要讲的 逃逸分析 了。
1. 什么是逃逸分析?
大约 4 分钟