当前位置: 首页 > news >正文

做网站需要什么硬件环境/网站优化排名操作

做网站需要什么硬件环境,网站优化排名操作,下载站模板 wordpress,惠州专门做网站起笔 最近的一段时间的精神有点萎靡,导致前两篇文章写的不尽人意,所以就休息了一段时间再来更新文章。 参考书籍:“深入理解java虚拟机” 个人java知识分享项目gitee地址:Cornucopia 个人java知识分享项目github地址&#xff1…

起笔

最近的一段时间的精神有点萎靡,导致前两篇文章写的不尽人意,所以就休息了一段时间再来更新文章。

在这里插入图片描述
参考书籍:“深入理解java虚拟机”

个人java知识分享项目gitee地址:Cornucopia

个人java知识分享项目github地址:Cornucopia

对象的内存布局

在这里插入图片描述

在HotSpot虚拟机中,对象的内存布局分为一下3块区域:

  • 对象头(Header)
  • 实例数据(Instance Data)
  • 对齐填充(Padding)

对象头中包含了类型指针(Class Pointer),通过改指针能确定对象属于那个类。如果对象是数组对象那么对象头中还会包含数组的长度。

对象头(Header)

在HostSpot虚拟机对象的对象头部分包含了两类信息:

  • 用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机中分别为32bit和64bit(8byte),官方称它为“Mark World”

  • 对象头的另外一部分是类型指针,即对象指向它的类型元数据的指针(Class Pointer),Java虚拟机通过这个指针来确定该对象是那个类的实例。此外,因为虚拟机可以通过普通Java对象的元数据信息确定Java对象的大小,但是如果数组的长度是不确定,将无法通过元数据的信息推断出数组的大小。因此,如果对象是一个数组,那么对象头中还必须有一块用于记录数组长度的数组,也就是上图中的Data Length。

实例数据(Instance Data)

实例数据是对象真正存储的有效信息,即我们在程序代码里面所定义的各种类型的字段内容,无论是从父类继承下来的,还是在子类中定义的字段都必须记录起来。

对齐填充(Padding)

对齐填充并不是必然存在的,也没有特别的含义,它仅仅起占位符的作用。那为什么要有这么一段数据是因为HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8byte的整数倍,换句话说就是任何对象的大小都必须是8字节的整数倍。对象头部分已经被精心设计成正好是8byte的倍数(1倍或者是2倍),因此,如果对象实例数据部分没有对齐的话,就需要通过对齐填充来补全。

分析案例

我们已经有对象内存布局的理论知识,现在,我们通过一个案例来加深一下印象:

案例:

new user();在内存中一共占多少个字节?

public class user {private String name;private int age;
}

解析

在开始之前,我们需要创建一个maven项目,然后引入JOL工具包

<dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.16</version>
</dependency>

执行代码:

public class ObjectTest {public static void main(String[] args) {System.out.println(ClassLayout.parseInstance(new user()).toPrintable());}static class user {private String name;private int age;}
}

JVM参数:

打印被设置的参数 : -XX:+PrintCommandLineFlags

结果:

JVM参数打印:

-XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 

终端输出内容:
在这里插入图片描述

我们来分析一下,首先看jvm参数中的XX:+UseCompressedClassPointers ,我们知道它开启了指针压缩(也就是会压缩ClassPointer的内存大小,从8byte->4byte),那么,按照上面我们掌握的理论知识,一个对象内存包含三个部分,对象头为固定的8byte,ClassPointer如果开启了指针压缩则是4byte,Instance Data这里user中包含了一个int对象占4byte,String是一个引用对象固定占4byte,也就是Instance Data总共占8byte,由于Padding是占位符,我们先不分析,这里对象头和对象数据总共占 8+4+8=20,这里20不是8的倍数,由于jvm的内存管理的限制,这里jvm会将padding按找距离20byte最少的8的倍数进行填充,也就是24byte,padding就是4byte(即图中的 (object alignment gap) 所占的byte大小)。

http://www.lbrq.cn/news/1288099.html

相关文章:

  • 什么网站做软件任务挣钱/竞价排名机制
  • 深圳网站建设吗/百度推广的广告靠谱吗
  • 什么网站做教育的比较多/新闻头条今日新闻
  • 郑州做网站费用/武汉大学人民医院东院
  • 神马站长平台/网站统计分析平台
  • 做企业网站进行推广要多少钱/创量广告投放平台
  • 美团外卖网站开发/百度手机助手苹果版
  • 怎么在建设厅网站报名/seo基础教程使用
  • 网站建设与发布的预算/旺道seo推广效果怎么样
  • 做网站的技术性说明/谷歌 chrome 浏览器
  • 建设企业网站管理系统目的/营销网站系统
  • 不良网站进入窗口免费正能量/二级域名网址查询
  • 极速微网站建设cms/seo如何优化
  • wordpress怎么更改地址/seo服务外包客服
  • 西安商城网站建设制作/html制作网站
  • 东莞网站建议/设计公司网站模板
  • 外贸网站搜索引擎优化方法/太原seo代理商
  • 微信辅助做单网站/seo挂机赚钱
  • 5118站长平台/西安关键词网站排名
  • 免费做图网站/网站如何seo推广
  • ps网站首页设计/b2b平台
  • css如何让网站首字放大/网络营销公司名字
  • 大学做机器人比赛的网站论坛/企业营销策划论文
  • 微网站 微信/东莞seo网站推广建设
  • 武汉有个网站叫什么/网络推广外包怎么接单
  • 新手怎么建立自己的网站/网站开发技术
  • 遵义交通建设网站/怎么开网店
  • 新闻视频网站开发/长春seo快速排名
  • 上饶网站建设/营销型网站和普通网站
  • 网站安全建设需求/今天刚刚的最新新闻
  • TwinCAT3编程入门1
  • TDengine 转化函数 TO_UNIXTIMESTAMP 用户手册
  • 协作机器人掀起工厂革命:码垛场景如何用数据重塑制造业命脉?
  • 【开发杂谈】用AI玩AI聊天游戏:使用 Electron 和 Python 开发大模型语音聊天软件
  • SpringBoot整合Liquibase提升数据库变更的可控性、安全性、自动化程度(最详细)
  • FT和RAG如何选择