并发编程之Java 对象头的详细解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 并发编程之Java 对象头的详细解析

Java 对象头

以 32 位虚拟机为例

普通对象

1. |--------------------------------------------------------------|
2. |                    Object Header (64 bits)                   |
3. |------------------------------------|-------------------------|
4. |       Mark Word (32 bits)          |   Klass Word (32 bits)  |
5. |------------------------------------|-------------------------|

数组对象

1. |---------------------------------------------------------------------------------|
2. |                             Object Header (96 bits)                             |
3. |--------------------------------|-----------------------|------------------------|
4. |        Mark Word(32bits)       |   Klass Word(32bits)  |  array length(32bits)  |
5. |--------------------------------|-----------------------|------------------------|

其中 Mark Word 结构为

1. |-------------------------------------------------------|--------------------|
2. |                  Mark Word (32 bits)                  |        State       |
3. |-------------------------------------------------------|--------------------|
4. |    hashcode:25  | age:4 |   biased_lock:0   |   01    |       Normal       |
5. |-------------------------------------------------------|--------------------|
6. |thread:23|epoch:2| age:4 |   biased_lock:1   |   01    |       Biased       |
7. |-------------------------------------------------------|--------------------|
8. |          ptr_to_lock_record:30              |   00    | Lightweight Locked |
9. |-------------------------------------------------------|--------------------|
10. |          ptr_to_heavyweight_monitor:30      |   10    | Heavyweight Locked |
11. |-------------------------------------------------------|--------------------|
12. |                                             |   11    |    Marked for GC   |
13. |-------------------------------------------------------|--------------------|

64 位虚拟机 Mark Word

1. |--------------------------------------------------------------------|--------------------|
2. |                          Mark Word (64 bits)                       |        State       |
3. |--------------------------------------------------------------------|--------------------|
4. | unused:25 | hashcode:31 | unused:1 | age:4 | biased_lock:0 |  01   |        Normal      |
5. |--------------------------------------------------------------------|--------------------|
6. | thread:54 |   epoch:2   | unused:1 | age:4 | biased_lock:1 |  01   |        Biased      |
7. |--------------------------------------------------------------------|--------------------|
8. |                    ptr_to_lock_record:62                   |  00   | Lightweight Locked |
9. |--------------------------------------------------------------------|--------------------|
10. |                 ptr_to_heavyweight_monitor:62              |  10   | Heavyweight Locked |
11. |--------------------------------------------------------------------|--------------------|
12. |                                                            |  11   |    Marked for GC   |
13. |--------------------------------------------------------------------|--------------------|


相关文章
|
7天前
|
Java 开发者
深入探索Java中的并发编程
本文将带你领略Java并发编程的奥秘,揭示其背后的原理与实践。通过深入浅出的解释和实例,我们将探讨Java内存模型、线程间通信以及常见并发工具的使用方法。无论是初学者还是有一定经验的开发者,都能从中获得启发和实用的技巧。让我们一起开启这场并发编程的奇妙之旅吧!
|
4天前
|
存储 算法 Java
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
本文介绍了 JVM 的内存区域划分、类加载过程及垃圾回收机制。内存区域包括程序计数器、堆、栈和元数据区,每个区域存储不同类型的数据。类加载过程涉及加载、验证、准备、解析和初始化五个步骤。垃圾回收机制主要在堆内存进行,通过可达性分析识别垃圾对象,并采用标记-清除、复制和标记-整理等算法进行回收。此外,还介绍了 CMS 和 G1 等垃圾回收器的特点。
13 0
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
|
7天前
|
监控 算法 Java
深入解析Java中的垃圾回收机制
本文旨在全面解析Java的垃圾回收机制,探讨其工作原理、常见算法以及在实际开发中的应用。通过对这一重要主题的深入分析,希望帮助读者更好地理解Java虚拟机(JVM)如何管理内存,从而编写出更高效、稳定的Java应用程序。
|
7天前
|
Java 开发者
Java中的异常处理机制深度解析
在Java编程中,异常处理是保证程序稳定性和健壮性的重要手段。本文将深入探讨Java的异常处理机制,包括异常的分类、捕获与处理、自定义异常以及一些最佳实践。通过详细讲解和代码示例,帮助读者更好地理解和应用这一机制,提升代码质量。
12 1
|
9天前
|
算法 安全 Java
Java中的并发编程是如何实现的?
Java中的并发编程是通过多线程机制实现的。Java提供了多种工具和框架来支持并发编程。
14 1
|
8天前
|
分布式计算 Java API
深入解析Java中的Lambda表达式及其应用
本文将深入探讨Java中Lambda表达式的定义、优势及其在实际编程中的应用。通过具体示例,帮助读者更好地理解和使用这一强大的编程工具。
|
5天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
18 2
|
9天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
13天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。
|
10天前
|
Java 开发者
Java中的多线程基础与应用
【9月更文挑战第22天】在Java的世界中,多线程是一块基石,它支撑着现代并发编程的大厦。本文将深入浅出地介绍Java中多线程的基本概念、创建方法以及常见的应用场景,帮助读者理解并掌握这一核心技术。

推荐镜像

更多
下一篇
无影云桌面