一个Java对象的大小怎么计算?

对象头+实例数据+对其填充

对象头

  1. MarkWord:用于存储对象运行时的数据,如hashCode、锁状态标志、GC分代年龄等。64位操作系统占8字节,32位操作系统占4字节。
  2. 对象元数据指针(kclass):对象指向类的指针,虚拟机通过这个指针来确定这个对象是哪一个类的实例。开启压缩指针占4字节,未开启占8字节。
  3. 数组长度:只有数组对象才有,占4字节。
阅读全文 »

1.静态代理

  1. 售卖香水接口

    1
    2
    3
    4
    5
    6
    /*
    * 定义真实对象和代理对象的公共接口
    */
    public interface SellPerfume {
    void sellPerfume(double price);
    }
  2. 定义香水提供商,实现接口

    1
    2
    3
    4
    5
    6
    public class ChanelFactory implements SellPerfume {
    @Override
    public void sellPerfume(double price) {
    System.out.println("成功购买香奈儿品牌的香水,价格是:" + price + "元!");
    }
    }
    阅读全文 »

1.SQL语句执行速度慢

一个SQL语句执行的速度很慢, 分两种情况讨论:

  • 大多数情况下很正常, 偶尔很慢, 则有如下原因:

    1. 数据库在刷新脏页
    2. 执行的时候, 遇到锁, 如表锁, 行锁
  • 一直执行很慢, 则有如下原因

阅读全文 »

1.Apollo

统一管理配置信息,增强配置管理的服务能力。

使用配置中心管理配置后,可以将配置信息从项目转移到配置中心,一般一个项目会有一个唯一的标识ID,通过这个ID从配置中心获取对应的配置内容。

阅读全文 »