请你尽量全面的说一个对象在 JVM 内存中的结构?

时间:2022-06-27 23:12:38

从 Java 14 开始,Project Valhala引入了 Value Type(或者称为 inline type),参考: Valhalla: https://openjdk.java.net/projects/valhalla/ ,

这里不讨论 Value Type 也就是 record 类型。

首先,Java 对象在堆内存内存中结构包括:

  1. 类型指针: 一个指向类信息的指针,描述了对象的类型。
  2. 标记字(Mark Word): 一组标记,描述了对象的状态,包括对象散列码(如果有)、对象的形状(是否是数组)、锁状态、数组长度(如果标记显示这个对象是数组,描述了数组的长度)
  3. 对齐性填充: 所有对象都是8字节对齐的 -> 也就是说,所有对象的起始位置都是满足A(A%8==0),所以对于有的对象需要这个对齐性填充来满足这个规则。
  4. 域变量区域: 这个对象的域变量所占用的内存。Java域变量存在两类:原始类型(primitive type)和普通对象指针(ordinary object pointer)。

然后, Java 对象的类型信息存储于 Java 元空间之中,默认情况下(压缩类指针开启的情况下),对象头的压缩类指针指向 MetaSpace 的类空间,类空间中存储各种指针型数据,例如实现方法多态以及 virtual call 的 vtable 与 itable 保存着方法代码地址的引用指针。非类空间中存储着比较大的元数据,例如常量池,字节码,JIT 编译后的代码等等。由于编译后的代码可能非常大,以及 JVM 对于多语言支持的扩展可能动态加载很多类,所以将 MetaSpace 的类空间与非类空间区分开

请你尽量全面的说一个对象在 JVM 内存中的结构?

每日一刷,轻松提升技术,斩获各种offer:

请你尽量全面的说一个对象在 JVM 内存中的结构?

请你尽量全面的说一个对象在 JVM 内存中的结构?的更多相关文章

  1. 什么情况下JVM内存中的一个对象会被垃圾回收?

    新生代满了会触发 Young GC,老年代满了会触发 Old GC.GC时会回收对象,那么具体是什么样的对象会被垃圾回收器回收呢? 可达性分析算法,判断是否被 GC Roots 引用 判断引用类型:强 ...

  2. 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}

    题目:有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'} 第一种方法: d = {'a': 1, 'b': 2}d = {value: k ...

  3. C# 能否获取一个对象所占内存的大小?

    今日,在项目重构的时候忽然想到一个问题,一个类哪些成员的增加,会影响一个类所占内存的大小?C#有没有办法知道一个对象占多少内存呢? 第一个问题:很快想到是类的非静态的字段.属性. 第二个问题:首先想到 ...

  4. 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。

    无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘 ...

  5. NET怎么精确计算一个对象占用的内存空间(GMK)

    NET如何精确计算一个对象占用的内存空间(GMK)如题 我最近做了一个类似Session的东西 但是我不知道最后管理起来他又多大 所以内存 对象 管理 session 类 分享到: ------解决方 ...

  6. java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方

    一道笔试题 22. 下面代码的运行结果为:() import java.io.*; import java.util.*; public class foo{ public static void m ...

  7. 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include&lt ...

  8. 给定一个数组A&lbrack;0&comma;1&comma;&period;&period;&period;&comma;n-1&rsqb;&comma;请构建一个数组B&lbrack;0&comma;1&comma;&period;&period;&period;&comma;n-1&rsqb;&comma;其中B中的元素B&lbrack;i&rsqb;&equals;A&lbrack;0&rsqb;&ast;A&lbrack;1&rsqb;&ast;&period;&period;&period;&ast;A&lbrack;i-1&rsqb;&ast;A&lbrack;i&plus;1&rsqb;&ast;&period;&period;&period;&ast;A&lbrack;n-1&rsqb;。不能使用除法。

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include&lt ...

  9. mybatis插入一个对象后获取表中自增的主键Id并且传入到插入的的对象中,方便将对象中其他属性赋值给其他以前表主键Id作为非空字段的表

    原本的sql语句为: <insert id="xx" parameterType="com.hrt.partner.model.ShopInsert"&g ...

随机推荐

  1. &lbrack;django&rsqb;Django的css、image和js静态文件生产环境配置

    前言:在Django中HTML文件如果采用外联的方式引入css,js文件或者image图片,一般采用<link rel="stylesheet" href="../ ...

  2. LeetCode Nested List Weight Sum

    原题链接在这里:https://leetcode.com/problems/nested-list-weight-sum/ 题目: Given a nested list of integers, r ...

  3. vi

    e! 放弃所有修改,从上次保存文件开始再编辑 shift+g 最后一行 gg 第一行 u 恢复上一次操作 如果查找下一个,按"n"即可. set nu 显示行号 编辑模式下111g ...

  4. POJ2828---线段树与逆序数&amp&semi;&amp&semi;DUTOJ1210---逆序对构造排列

    来看这样一道问题:http://acm.dlut.edu.cn/problem.php?id=1210 题目大意:对于一个1-n的排列,a1,a2,a3,a4...an我们把满足i < j,ai ...

  5. Unity3D游戏开发从零单排&lpar;五&rpar; - 导入CS模型到Unity3D

    游戏动画基础 Animation组件 Animation组件是对于老的动画系统来说的. 老的动画形同相应的动画就是clip,每一个运动都是一段单独的动画,使用Play()或CrossFade(),直接 ...

  6. android使用shape做selector按钮按下和弹起的动画

    平时效果:   按下效果: selector代码: <?xml version="1.0" encoding="utf-8"?> <selec ...

  7. Centos7下安装Docker

    1.首先卸载旧版: yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...

  8. 解决Table不继承父节点的属性的方法

    解决Table不继承父节点的属性的方法 发现table不继承父节点的属性. 解决方法:给html文件加上<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  9. C&num;学习笔记(35)——事件做的登录案例

    说明(2018-4-9 20:11:42): 1. 先自定义了一个登录控件,可以输入账号.密码,点击登录.然后在Form1里面拖入这个控件,要求输入账号密码正确时,点击登录,控件显示绿色,否则显示红色 ...

  10. 阿里八八Alpha阶段Scrum&lpar;4&sol;12&rpar;

    今日进度 叶文滔: 整合了一下已完成的界面设计,修复了一些BUG. 问题困难:制作多级悬浮按钮阻碍重重,首先是刚更新不久的Andriod Studio 3.0向前兼容性差,一些语句规则的修改无所适从, ...