1、maven 依赖

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

2、测试类

package constxiong;import org.openjdk.jol.info.ClassLayout;
import org.openjdk.jol.info.GraphLayout;/*** 测试对象占用的内存信息*/
public class TestObjectSize {public static void main(String[] args) {System.out.println("对象内部信息");System.out.println(ClassLayout.parseInstance(new String("ConstXiong")).toPrintable());System.out.println(ClassLayout.parseInstance(new char[]{'C', 'o', 'n', 's', 't', 'X', 'i', 'o', 'n', 'g'}).toPrintable());System.out.println("对象整体信息");System.out.println(GraphLayout.parseInstance(new String("ConstXiong")).toPrintable());System.out.println(GraphLayout.parseInstance(new char[]{'C', 'o', 'n', 's', 't', 'X', 'i', 'o', 'n', 'g'}).toPrintable());System.out.println("对象占用总空间");System.out.println(GraphLayout.parseInstance(new String("ConstXiong")).totalSize());System.out.println(GraphLayout.parseInstance(new char[]{'C', 'o', 'n', 's', 't', 'X', 'i', 'o', 'n', 'g'}).totalSize());}
}

3、打印结果

对象内部信息
java.lang.String object internals:OFFSET  SIZE     TYPE DESCRIPTION                               VALUE0     4          (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)4     4          (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)8     4          (object header)                           d0 16 3e 17 (11010000 00010110 00111110 00010111) (389945040)12     4   char[] String.value                              [C, o, n, s, t, X, i, o, n, g]16     4      int String.hash                               020     4          (loss due to the next object alignment)
Instance size: 24 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total[C object internals:OFFSET  SIZE   TYPE DESCRIPTION                               VALUE0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)8     4        (object header)                           08 02 3e 17 (00001000 00000010 00111110 00010111) (389939720)12     4        (object header)                           0a 00 00 00 (00001010 00000000 00000000 00000000) (10)16    20   char [C.<elements>                             N/A36     4        (loss due to the next object alignment)
Instance size: 40 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total对象整体信息
java.lang.String@1a93a7cad object externals:ADDRESS       SIZE TYPE             PATH                           VALUEd6284f40         40 [C               .value                         [C, o, n, s, t, X, i, o, n, g]d6284f68   11751072 (something else) (somewhere else)               (something else)d6db9e08         24 java.lang.String                                (object)[C@3b764bced object externals:ADDRESS       SIZE TYPE PATH                           VALUEd6df9610         40 [C                                  [C, o, n, s, t, X, i, o, n, g]对象占用总空间
64
40

内存分析:

https://www.javanav.com/val/49e9ce5857744a39a88b1977d84086c7.html


【Java学习资源】整理推荐

  • Java 8 Stream API Demo
  • Druid 使用
  • 借助 libreoffice,word 转 pdf 体验
  • Java 动态代理
  • openjdk jol 工具打印 Java 对象内存布局
  • Spring整合MyBatis
  • MyBatis 自定义插件
  • MyBatis 延迟加载
  • MyBatis 1对1 1对多 关联查询
  • MyBatis insert 获取自增主键
  • MyBatis 批量插入
  • 分页插件 Mybatis-PageHelper
  • MyBatis 原生使用
  • Sharding-JDBC 实现分库分表
  • JDK1.8 中的日期与时间 API
  • Sharding-JDBC 实现读写分离

【Java面试题与答案】整理推荐

  • 基础与语法
  • 集合
  • 网络编程
  • 并发编程
  • Web
  • 安全
  • 设计模式
  • 框架
  • 算法与数据结构
  • 异常
  • 文件解析与生成
  • Linux
  • MySQL
  • Oracle
  • Redis
  • Dubbo

openjdk jol 工具打印 Java 对象内存布局相关推荐

  1. JOL(java object layout): java 对象内存布局

    我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子?对于普通的java程序员来说,可能从来没有考虑过java中对象的问题,不懂这些也可以写好代码.今天,给大家介绍 ...

  2. JOL(java object layout --java 对象内存布局)

    JOL(java object layout --java 对象内存布局) ⚠⚠⚠本文以java普通对象为切入点,分析java的对象内存布局,数组见文末 maven地址

  3. java对象内存布局中的基本类型字段排列顺序

    java对象内存布局: mark word(记录hashCode值和锁的标识等等) class对象指针 类字段 补齐位 如果是数组对象,2.3之间应该加上  数组长度 布局排列表: 32位jdk 普通 ...

  4. Java对象内存布局(JOL)

    前言 Java对象的内存布局主要由对象头(Object Header).实例数据(instance data).对齐填充(padding)三部分组成. 对象头:存储对象的基础信息(如锁状态.GC状态. ...

  5. 使用JOL工具计算Java对象的大小

    注意:本文默认环境为 64 位操作系统,JDK 为 1.8,JVM 为 HotSpot. 工具 JOL全称为Java Object Layout,是用来分析JVM中对象布局的工具,可以在运行时计算某个 ...

  6. Java对象内存布局和对象头

    Object obj = new Object(); //new 一个对象,占内存多少? 没有实例数据的话,就是16个字节 1.对象的内存布局 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划 ...

  7. java对象内存布局及大小

    查看虚拟机配置(以hotspot 64bit 虚拟机为例) java -XX:+PrintCommandLineFlags -version 输出结果如下图,表示当前虚拟机的配置信息.每个人的机器可能 ...

  8. Java对象内存布局

    文章目录 1 场景 2 内存布局图 3 代码验证 3.1 maven依赖 3.2 代码示例 3.3 输出内容 3.4 分析 3.5 补充 4 问题解答 4.1 new空对象占用多少字节 4.2 Jav ...

  9. java 对象内存布局_Java--对象内存布局

    在HotSpot虚拟机中,对象在内存中的存储布局可以分为3块区域:对象头部.实例数据.对齐填充. 一.对象头部Header的布局 Mark Word Class 指针 在32位系统下,上面两部分各占4 ...

最新文章

  1. 文本分类step by step(二)
  2. UI中的响应时间:3个重要的界限
  3. 数据预处理-异常值识别
  4. Qt中的自定义模型类
  5. android 用dx.bat 转换class 为dex
  6. 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)
  7. 连载四:PyCon2018|恶意域名检测实例(附源码)
  8. Linux下mysql主从同步备份master-slave详细配置
  9. Yarn 和 NPM 国内快速镜像(淘宝镜像)
  10. URLEncoder URLDecoder
  11. dp算法求解矩阵连乘的问题
  12. 计算机键盘fn,笔记本键盘fn键有什么用 笔记本键盘fn键使用说明大全
  13. 迭代期望和方差(iterated expectation,variance)
  14. java.io的缓冲流、转换流、序列化流
  15. WARNING: Waited 15 secs for write IO to PST disk 4 in group 3 in alert_asm.log
  16. Nolan最新版本2.4 Windows和docker安装升级教程, 登陆修复.排除个别需要实名的账号,nvjdc对接青龙面板教程
  17. 飞书:远程办公更轻松
  18. 让你自己制作的木马和病毒用360安全卫士杀不出。加壳,免杀,加花,捆绑,压缩。
  19. 分享一款快速、免费抠图工具——凡科快图
  20. 9个最佳新闻聚合器网站(+如何构建自己的网站)

热门文章

  1. 【QT】编译QtWebEngine(Build QtWebEngine from source)Win10+QT5.7.1_x64+VS2015
  2. qq如何获取root,如何获取抖音权限
  3. 【简单入门】使用Babel进行es6转es5
  4. android界面的规范性,IOS和Android规范,UI看什么?(三)
  5. SEO检测网站,看网站是否具备SEO架构!!
  6. 软考知识点——结构化语言描述加工逻辑
  7. mysql复合索引单列索引
  8. 罗永浩宣布退网创业;谷歌研究员“走火入魔”事件曝光:认为AI已具备人格,被罚带薪休假;Wasmer 2.3 发布|极客头条
  9. win10如何打开摄像头_Win10专业版如何开启自带录屏功能?Win10录屏功能的开启方法...
  10. win10安装MinGW-W64的一点心得