【Java并发】聊聊对象内存布局和syn锁升级过程

news2024/11/17 10:40:22

对象存储解析:一个空Object对象到底占据多少内存?

对象内存布局

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Mark Word占用8字节,类型指针占用8个字节,对象头占用16个字节。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
好了,我们来看一下一个Object对占用多少空间,
在这里插入图片描述
因为java默认是开启压缩的。
在这里插入图片描述
所以在类开启压缩的时候,会自动填充4字节,所以就是16字节,而没有开启类压缩的 也是16字节。

syn锁升级

在这里插入图片描述
synchronized锁:由对象头中的Mark Word根据锁标志位的不同而被复用及锁升级策略
在jdk5中使用的是重量级锁,用户态和内核态有切换。
在这里插入图片描述
为了提升性能,引入了偏向锁和轻量级锁。其实就是性能和数据安全性的一种权衡。
在这里插入图片描述
在这里插入图片描述

无锁

        Object obj = new Object();
        System.out.println(Integer.toHexString(obj.hashCode()));
        System.out.println(ClassLayout.parseInstance(obj).toPrintable());

在这里插入图片描述

偏向锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入代码片在这里插入图片描述
在这里插入图片描述

        Object obj = new Object();
        new Thread(()->{
            synchronized (obj) {
                System.out.println(ClassLayout.parseInstance(obj).toPrintable());
            }
        }).start();

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

轻量级锁

在这里插入图片描述
在这里插入图片描述

重量级锁

多个线程进行欠账资源的时候,就会将锁升级到重量级锁。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/933390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

帆软只是一个BI厂商?答案是“No”!

大数据产业创新服务媒体 ——聚焦数据 改变商业 2023年,8月17-19日,帆软智数大会落子花城广州,邀请了1200海内外CIO和数字化专家,共同探讨数字化转型新机遇。 值得关注的是,这也是帆软首次以BI和零代码双赛道第一的身…

django开发流程

设计model django采用ORM映射,可以在代码中描述数据库的布局 只需要导入from django.db import models 并使类继承models.Model,models中的一个类对应数据库中的一个表,类的变量对应表字段。 创建数据库 $ python manage.py makemigration…

Ubuntu【系统环境下】【编译安装OpenCV】【C++调用系统opencv库】

Ubuntu【系统环境下】【编译安装OpenCV】【C调用系统opencv库】 前言: 本人需要用C写代码,调用OpenCV库,且要求OpenCV版本号大于4.1.0 由于使用的是18.04的版本,所以apt安装OpenCV的版本始终是3.2.0,非常拉胯&#…

python爬虫的js逆向入门到进阶教程文章分享汇总~持续更新

目录 一、内容介绍二 、专栏内容-持续更新1、JS逆向入门2、Js逆向进阶3、爬虫基础知识4、工具与安装5、漫星内容分享 三、星球使用四、b站up主视频推荐 一、内容介绍 二 、专栏内容-持续更新 1、JS逆向入门 2023-08-25》11.常见加密>xx音乐RSA加密 https://articles.zsxq.c…

电视乱收费致200元电视也无人买,广电总局出手了,用户拍手欢迎

各个互联网企业盯着电视用户,将用户当韭菜,收费太狠,导致国内市场的电视销量暴跌,消费者怨声载道,日前国家广播电视台联合其他部门开展专项整治,狠杀这类乱收费的乱象,或许将有望挽回用户。 近几…

报错处理:MySQL数据库连接超时

具体报错: ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock (2) 报错环境:该报错一般发生在Linux服务器上运行MySQL数据库时,尝试连接MySQL时出现连接超时的情况。 排错思路&#xff1a…

VIOOVI分享:什么是动作分析?动作分析的方法有哪些?

动作分析是由吉尔布雷斯夫妇始创的,是根据操作者实施的动作顺序观察动作,用特定的标记记录以手和眼睛为中心的人体各部位的动作内容,掌握实际情况,并将上述记录制成图表的一套分析方法,在此基础上判断动作质量&#xf…

Docker容器学习:Dockerfile制作Web应用系统nginx镜像

目录 编写Dockerfile 1.文件内容需求: 2.编写Dockerfile: 3.开始构建镜像 4.现在我们运行一个容器,查看我们的网页是否可访问 推送镜像到私有仓库 1.把要上传的镜像打上合适的标签 2.登录harbor仓库 3.上传镜像 编写Dockerfile 1.文…

[机缘参悟-102] :IT人 - 管理的本质?管理人与从事技术的本质区别?人性、冰山模型、需求层次模型

感悟: 管理的本质是:学习各种管理理论、方法、技能,克服自身的人性缺点、预防他人人性的恶点、利用他人的人性特点拿到结果,从而完成组织、管理者的上司、管理者自身、管理者下属的目标。管理中的问题,80%以上都人性问…

基于实例的学习方法

基于实例的学习方法 动机基本概念基于实例的学习基于实例的概念表示 1. 最近邻最近邻的例子理论结果最近邻(1- NN):解释问题 K-近邻(KNN)KNN讨论1 :距离度量KNN 讨论2:属性KNN:属性归一化KNN:属性加权 KNN讨论3:连续取值目标函数K…

数据结构(Java实现)LinkedList与链表(上)

链表 逻辑结构 无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。 无头双向链表:在Java的集合框架库中LinkedList底层实现就是无头双向循环链表。 链表的…

Stylet框架

Stylet框架 编辑时间:2023/8/25 1.Stylet简介 Stylet是一个小巧但功能强大的MVVM框架,灵感来自Caliburn.Micro。其目的是进一步降低复杂性和魔力(译者注:Caliburn.Micro有很多让人抓狂的约定,看起来像魔法,这对新手…

项目进度管理(4-2)关键链法和关键路径法的区别和联系

1 关键链法和关键路径法的主要区别 1.1 关键链法和关键路径法的关注焦点不同 关键路径法(CPM):关注项目中最长的路径,也就是所需时间最长的路径,这被称为关键路径。关键路径决定了项目的最早完成时间。关键链法&…

Jetbrains IDE新UI设置前进/后退导航键

背景 2023年6月,Jetbrains在新发布的IDE(Idea、PyCharm等)中开放了新UI选项,我们勾选后重启IDE,便可以使用这一魔性的UI界面了。 但是前进/后退这对常用的导航键却找不到了,以前的设置方式(Vi…

【2022年电赛】有人开摆,有人跑路,有人5秒不识数

前言:该作品是2022年四川省电子设计竞赛一等奖作品,其能稳定完成全部四个问题,但存在停车距离的精度问题。该文章将会介绍该作品的整体设计思路,关键控制算法等技术相关问题,也会给出工程的下载链接。同时本人参加过20…

考研408 | 【操作系统】 内存管理

内存的基础 内存和内存的作用: 几个常用的数量单位: 指令的工作原理: 问题:如何将指令中的逻辑地址转换为物理地址? 解决办法:装入的三种方式 1.绝对装入 2.可重定位装入 3.动态重定位 从写程序到程…

分布式事务篇-2.2 Seata存储模式,配置模式,注册模式

文章目录 前言一、存储模式:1.1 存储模式的作用:1.2 File 存储模式:1.2.1 映射数据存储文件:1.2.3 file存储优缺点: 1.3 db 存储模式:1.3.1 application.yml 配置db 信息:1.3.1 拷贝驱动jar:1.3…

实验室信息化建设都包括哪些方面?

在现代的计算机通信系统、信息安全系统和自动控制等系统中,软件开发工作占了相当大的比重,而与这些系统有关的软件一般十分庞大,也相当复杂。这些软件还要大量地与操作系统核作深层次的交互,以进行信息的传输、控制和实现各种通信…

#systemverilog# 之 event region 和 timeslot 仿真调度(六)疑惑寄存器采样吗

一 象征性啰嗦 想必大家在刚开始尝试写Verilig HDL代码的时候,都是参考一些列参考代码,有些来自于参考书,有些来自于网上大牛的笔记,甚至有写来自于某宝FPGA开发板的授权代码。我还记得自己当时第一次写代码,参考的是一款Altera 芯片,结合Quartus 开发软件, 在上面练习…