引入依赖

org.openjdk.jol

jol-core

0.10

使用方式/**

* 测试 User 对象在内存中的布局

*

* @author CHAN

* @date 2020/04/28

*/

public class JolTest {

public static void main(String[] args) {

User user = new User();

String s = ClassLayout.parseInstance(user).toPrintable();

System.out.println(s);

}

static class User {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

}

对象的状态

输出结果如下:可以看出对象占用内存 20 字节,但是因为 JVM 虚拟机是 64 位,所以大小必须是 8 字节的倍数,于是对象被填充为 24 字节。

com.zqskate.blogs.web.ui.service.test.JolTest$User object internals:

OFFSET SIZE TYPE DESCRIPTION VALUE

0 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) 43 c1 00 f8 (01000011 11000001 00000000 11111000) (-134168253)

12 4 int User.age 0

16 4 java.lang.String User.name null

20 4 (loss due to the next object alignment)

Instance size: 24 bytes

Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

对象的五种状态:无锁状态、偏向锁、轻量锁、重量锁、GC标记

java对象布局查看工具_Java 查看对象布局工具 - Java Object Layout相关推荐

  1. java input是关键字吗_Java中对象的串行化(Serialization)和transient关键字 - 金色阳光...

    Java中对象的串行化(Serialization)和transient关键字: 对象的串行化(Serialization) 一.串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程 ...

  2. java怎么判断对象不为空_java判断对象是否为空的方法

    java判断对象是否为空的方法 发布时间:2020-06-25 14:39:17 来源:亿速云 阅读:134 作者:Leah 这篇文章将为大家详细讲解有关java判断对象是否为空的方法,文章内容质量较 ...

  3. java中比较对象面积的大小_java   面积对象考试题

    1.分析下列Java代码: class A{ public static void main(String[] args){ method(); static void method(){ try{ ...

  4. java 日历工具_java之日历处理工具类Calendar类

    编程语言 java之日历处理工具类Calendar类 字号+ 作者:小虾米 2016-11-08 12:43 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_O ...

  5. java dump 工具_Java线程Dump分析工具--jstack

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使 ...

  6. java序列化和反序列化工具_Java 序列化和反序列化工具类并解决StreamCorruptedException问题 | 学步园...

    问题: 若通过ObjectOutputStream向一个文件中多次以追加的方式写入Object,为什么用ObjectInputStream读取这些Object时,会产生StreamCorruptedE ...

  7. java有几种变量_java有多少种变量?java类变量怎么使用?

    相信有很多刚入行学习java技术的人,对java有多少种变量都不是很清楚,清楚的了解java变量java人员才可以写出好代码,那么java有多少种变量?今天我们就来讲解一下. 成员变量:就是声明为类的 ...

  8. java 所有类的超类_Java中所有类的超类Object

    Object的地位 在Java中所有的类都继承于Object类,但不用在声明一个类时显示的extends Object Object中几个重要的方法: 1.equals方法: 用于检测一个对象是否等于 ...

  9. java date 加一天_Java 8中的时间JAVA成长之路

    Java 8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了. java.util.Date月份从0开始 ...

  10. jredis 工具_java中的redis工具类

    1.redis基础类packagecom.qlchat.component.redis.template;importjavax.annotation.PostConstruct;importorg. ...

最新文章

  1. php上传图文教程,PHP 上传图片、文件的方法
  2. Java Web开发乱码问题
  3. MLPerf最新AI芯片跑分:谷歌TPU和英伟达打破记录
  4. matlab 最后一列,求大神帮我解释一下matlab最后几行是什么意思
  5. 找不到atlapp.h的解決方法
  6. Java虚拟机的功能
  7. python3语法糖_Python笔记3:语法糖
  8. Android 11 无法调起微信支付解决方案
  9. 源表字段修改以后引发GoldenGate同步失败
  10. Android GridView属性集合
  11. 批次程序安裝手冊寫法
  12. Shiro框架-史上详解
  13. YOLO系列目标检测算法-YOLOv2
  14. linux centos7 下ruby 下载安装
  15. 计算机网络宽带越大 网速越快,如何调节自己的电脑网速?几个步骤教你如何给电脑提速与降速!...
  16. SpringCloud 之分布式 CAP 定理
  17. 美团一面:线程崩溃了,进程也会崩溃吗?
  18. 计算机编程情话,程序员的土味情话~(表白代码第二波)
  19. 华为交换机端口配置删除_华为交换机配置_华为交换机怎么清除端口下所有配置?...
  20. 搭建无广告免费小说网站------简述(一)

热门文章

  1. 一些与HTML相关名词的简介
  2. MySQL 修改字段
  3. Hibernate一级缓存与二级缓存的区别
  4. 用户界面的一些好的设计理念
  5. CentOS修改网络配置
  6. myeclipse 8.5 安装jbpm3.2开发插件
  7. 另一种将线程并入应用程序的方法-委托
  8. Android RecyclerView 列表加载图片宽高适配
  9. 动态规划|Dynamic Programming
  10. 字符串匹配【模板】(luogu 3375)