JVM专题之Java对象内存模型

news/2024/7/7 19:35:47 标签: jvm, java, 性能优化

一个Java对象在内存中包括3个部分:

对象头、实例数据和对齐填充

数据  内存 --  CPU   寄存器      -127   补码   10000001   -  11111111        32位的处理器

一次能够去处理32个二进制位      4字节的数据      64位操作系统    8字节    2的64次方的寻址空间

指针压缩技术       JDK1.6出现的     开启了指针压缩      什么时候指针压缩会无效  ??

超过32G指针压缩无效

小端存储:

便于数据之间的类型转换,例如:long类型转换为int类型时,高地址部分的数据可以直接截掉。

大端存储:

便于数据类型的符号判断,因为最低地址位数据即为符号位,可以直接判断数据的正负号。

java中使用的是大端存储。

内存模型设计之–Class Pointer

句柄池访问:

直接指针访问对象图解:

区别:
句柄池:

使用句柄访问对象,会在堆中开辟一块内存作为句柄池,句柄中储存了对象实例数据(属性值结构体) 的内存地址,访问类型数据的内存地址(类信息,方法类型信息),对象实例数据一般也在heap中开 辟,类型数据一般储存在方法区中。

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

**缺点** :增加了一次指针定位的时间开销。

**直接访问:**

直接指针访问方式指reference中直接储存对象在heap中的内存地址&#x


http://www.niftyadmin.cn/n/5535006.html

相关文章

Vue3 Hooks 用法 scrollTop, mousemoveHandler,useCountDown

三个实例来自 learn_vue: 【教学工程】学习vue2/vue3 (gitee.com) 目录 1. 何为Hooks 2. 使用场景 3. 常见的 Hooks 函数 4. 实例 4.1简易hook 例子 4.2 自定义scrolltop例子 4.3 mousemoveHandler例子 4.4 useCountDown例子 1. 何为Hooks Hooks 是一种函数,用于…

Linux线程:编织并发的梦幻世界

目录 🚩引言 🚩听故事,引概念 🚩生产者消费者模型 🚀再次理解生产消费模型 🚀挖掘特点 🚩条件变量 🚀条件变量常用接口 🚀条件变量的原理 🚩引言 上一篇…

Python中列表推导式的概念以及示例

列表推导式(List Comprehension)是Python中一种简洁而强大的工具,用于从现有的可迭代对象(如列表、元组、字符串等)中快速生成新的列表。它提供了一种优雅的方式来表达循环和条件逻辑,以生成列表。列表推导…

centos部署Nginx并配置网页进行访问

1. 安装 Nginx 安装 EPEL 仓库 EPEL (Extra Packages for Enterprise Linux) 仓库提供了许多不在 CentOS 基础仓库中的软件包,包括 Nginx。 sudo yum install epel-release -y#安装 Nginx sudo yum install nginx -y 2. 启动 Nginx 并设置开机启动 sudo system…

android 国内下载Gradle源

在中国使用 Gradle 时,可以配置使用一些国内的镜像源,以提高下载速度和稳定性。以下是几个常用的 Gradle 镜像源地址: 配置 gradle-wrapper.properties 文件: 阿里云: distributionUrlhttps\://services.gradle.org/distributions/gradle-7.…

恒创科技:HTTP错误码403禁止意味着什么,怎么修复它?

HTTP错误码403禁止意味着客户端无权访问特定网页或服务器。403 错误表示客户端存在问题,无论用户使用的是哪种网络浏览器,都可能发生这种情况。幸运的是,阻止服务器允许访问特定页面的问题通常可以修复。以下是一些常见原因和相应的解决方案。…

力扣1685.有序数组中差绝对值之和

力扣1685.有序数组中差绝对值之和 记录左边之和 和 右边之和从左到右遍历每个元素 求res class Solution {public:vector<int> getSumAbsoluteDifferences(vector<int>& nums) {int n nums.size(),lsum 0,rsum accumulate(nums.begin(),nums.end(),0);ve…

Django 自定义过滤器

1&#xff0c;编写自定义过滤器并注册 创建目录 Test/app5/templatetags 分别创建文件 Test/app5/templatetags/__init__.py Test/app5/templatetags/myfilter.py 添加过滤器脚本 Test/app5/templatetags/myfilter.py from django import template register template.…