java运行数据区域分布

news2024/11/29 12:33:32

       Java在运行程序过程中,会将自己的内存划分为若干个不同的数据数据区域,这些若干个区域,每个区域都有自己的用途,具体看下图

      java是面向对象的语言,那么虚拟机中的数据(对象)是怎么被创建出来的呢?如何布局以及如何被访问的呢?

对象创建的流程

  • 虚拟机碰到一条字节码new指令,检查这个参数是否在常量池中可以准确的定位在一个类的符号引用上
  • 检查这个类是否被加载、解析、初始化
  • 执行相应类的加载过程
  • 虚拟机为对象分配内存

 分配内存原理

 在很多时候我们会同时创建2个对象,就好比虚拟机正在给对象A分配空间,指针还没有来得及修改,对象B又用原来的指针去分配内存,那这种情况我们又如何解决呢?

  1. 虚拟机采用CAS配上失败重试的方式保证更新操作的原子性
  2. 每个对象在预先分配的内存(本地缓存)中进行,本地缓存用完后,在由堆再进行分配新的缓存区(同步锁定)

 对象的内存布局

 对象的访问定位

 

 访问方式的方法总有俩种:

1.句柄访问

        Java堆中将可能会划分出一块内存作为句柄池,reference中存储的是对象的句柄地址,句柄中包含了对象实例数据与类型数据各自具体的地址信息。

2.直接指针

        Java堆中对象的内存布局就必须考虑如何放置访问类型数据的相关信息,reference中存储的直接是对象地址,如果只是访问对象本身的话,就不需要多一次间接访问的开销。

 优缺点

句柄访问:reference中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象时非常普遍的行为)时只会改变句柄中的实例数据指针,而reference本身不需要被修改。

直接指针:速度快,它节省了一次指针定位的时间开销。

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

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

相关文章

加密 笔记

文章目录简单异或加密对称加密DES加密AES加密1.简单的加密解密逻辑2.填充方式**noPadding**3.加密模式1、**ECB模式(默认)**2、**CBC模式**3、CFB模式4、OFB模式5、CTR模式代码案例ECB加密和CBC加密测试非对称加密RSA加密AES和RSA混合加密哈希散列算法什…

[附源码]Python计算机毕业设计动物保护资讯推荐网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

RabbitMQ[3]-RabbitMQ如何保证消息的可靠性投递与消费?

上篇文章:RabbitMQ的核心概念有哪些?它们的职责是什么?中我们详细介绍了RabbitMQ的工作模式,根据它的工作模式,一条消息从生产者发出,到消费者消费,需要经历以下4个步骤: 生产者将消…

Java笔记——String类各种方法的使用总结(附带实例)

String类的获取方法 String类实现获取功能的方法有 int length() —— 获取字符串长度 char charAt(int index) —— 获取指定索引处的字符值 int indexOf(int ch) —— 获取指定字符第一次出现的索引位置 int indexOf(String str) —— 获取指定字符串第一次出现的索引位…

ArrayDeque源码解析

ArrayDeque源码解析 问题 (1)什么是双端队列? (2)ArrayDeque 是怎么实现双端队列的? (3)ArrayDeque 是线程安全的吗? (4)ArrayDeque 是有界的…

【正点原子FPGA连载】 第三十五章双目OV5640摄像头HDMI显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第三十五章双目O…

基于jsp+mysql+ssm二手书交易管理系统-计算机毕业设计

项目介绍 这样一个二手书交易网站为用户提供了一个可以在网上买卖图书的平台,用户可以通过二手书交易管理系统进行注册或登录操作,登录成功后可以查看自己已发布的售书信息或者求购信息。同时,用户可以浏览其他用户发布的售书信息和求购信息…

基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改

基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改 仿真图proteus 8.9 程序编译器:keil 4/5 编程语言:C语言 设计编号:S0027 视频演示 基于51单片机的多层电梯(1-16层)运行系统仿真设计演示视频主要功能: 结合实际情…

[附源码]Python计算机毕业设计SSM基于web的学生社团管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]Python计算机毕业设计SSM基于的二手房交易系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 Ma…

基于Java+SQL Server2008开发的(WinForm)个人财物管理系统【100010036】

一、需求分析 个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展,计算机在管理方面应用的旁及,利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的,其次对个人财务管理…

2022年12月中国数据库排行榜:OceanBase立足创新登榜首,华为腾讯排名上升树雄心

不经一番寒彻骨,怎得梅花扑鼻香。 2022年12月的 墨天轮中国数据库流行度排行榜 火热出炉,本月共有249个数据库参与排名,相比上月新增3个数据库。本月排行榜前十用一句话可以概括为:榜单前十一片红,TODO 格局重洗牌&…

[附源码]Python计算机毕业设计SSM基于web技术的米其林轮胎管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SpringBoot中使用Spring-Retry重试框架 - 第454篇

悟纤:最近我看到自己之前的try/catch、while代码进行请求的重试,看着很不舒服。 师傅:确实了,为师以前也是写出过这样的一堆难看的代码。 悟纤:那师傅这个事情有解吗? ​师傅:徒儿,…

博客网页制作基础大二dw作业 web课程设计网页制作 个人网页设计与实现 我的个人博客网页开发

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

2022全年度平板电视十大热门品牌销量榜单

随着社会的发展,近年来,平板电视成为了彩电转型升级的新方向。随着我国传统彩电进入存量竞争阶段,平板电视已成为我国彩电行业结构调整和转型升级的主要方向。 根据鲸参谋数据统计,今年京东平台平板电视的年度累计销量达到1300多万…

< 在element-ui中: 使用el-tree + el-table组件,联动请求用户数据表格组件 (基础版,后续可能更新) >

文章目录👉 前言👉 一、效果演示👉 二、原理👉 三、实现代码往期内容 💨👉 前言 在 Vue elementUi 开发中,实现通过树状组织机构,点击查询用户信息联动效果! 组件较为简…

MySQL数据库学习(6)

一、MySQL索引简介 索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。 通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。不然的话,数据库系统将…

强化学习_06_pytorch-doubleDQN实践(Pendulum-v1)

环境描述 环境是倒立摆(Inverted Pendulum),该环境下有一个处于随机位置的倒立摆。环境的状态包括倒立摆角度的正弦值,余弦值,角速度;动作为对倒立摆施加的力矩(action Box(-2.0, 2.0, (1,), float32))。…

windows11安装cuda+cudnn

安装Nvidia显卡驱动 如需安装显卡驱动,在官方驱动下载网站找到自己的显卡型号对应的驱动下载并安装:官方驱动 | NVIDIA 安装CUDA 前言 windows10 版本安装 CUDA ,首先需要下载两个安装包 CUDA toolkit(toolkit就是指工具包)cu…