下面是一个常见的Java 面试题:
聊聊:Java中String对象的大小?
首先,看看空String占用的空间
当前内存大小是在默认开启压缩指针的条件下
- 对象头 12
- char[]数组引用 4
- int 类型 hash数据大小 4
- loss due to the next object alignment 对齐填充 4
总结:24
再次,来看看String类中的成员变量。
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -6849794470754667710L;
非空String占用的空间
当前内存大小是在默认开启压缩指针的条件下
- 对象头 12
- char[]数组引用 4
- int 类型 hash数据大小 4
- loss due to the next object alignment 对齐填充 4
总结:24
推荐阅读:
-
《尼恩Java面试宝典》
-
《Springcloud gateway 底层原理、核心实战 (史上最全)》
-
《Flux、Mono、Reactor 实战(史上最全)》
-
《sentinel (史上最全)》
-
《Nacos (史上最全)》
-
《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》
-
《clickhouse 超底层原理 + 高可用实操 (史上最全)》
-
《redis 集群 实操 (史上最全、5w字长文)》
-
《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》
-
《红黑树( 图解 + 秒懂 + 史上最全)》
-
《分布式事务 (秒懂)》
-
《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》
-
《缓存之王:Caffeine 的使用(史上最全)》
-
《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》
-
《Docker原理(图解+秒懂+史上最全)》
-
《Redis分布式锁(图解 - 秒懂 - 史上最全)》
-
《Zookeeper 分布式锁 - 图解 - 秒懂》
-
《Zookeeper Curator 事件监听 - 10分钟看懂》
-
《Netty 粘包 拆包 | 史上最全解读》
-
《Netty 100万级高并发服务器配置》
-
《Springcloud 高并发 配置 (一文全懂)》