登录社区云,与社区用户共同成长
邀请您加入社区
容器和对象
大量重复对象撑爆内存?享元模式把对象状态拆成不可变的“共享部分”和随场景变化的“外部部分”,用 computeIfAbsent 线程安全地复用实例,内存从“数量级”降到“种类级”。结合 Integer.valueOf()、字符串常量池、Record 类,一次性讲透。
享元模式是一种通过共享相同状态对象来减少内存占用的设计思想,在Java中既体现为JVM内置机制(如String常量池、Integer缓存),也需开发者在业务场景中主动实现。其核心原理是分离内在状态与外在状态,依托不可变性保障线程安全,并依赖高效缓存(如ConcurrentHashMap)实现复用。技术价值在于显著降低堆内存压力、减少GC频率,尤其适用于高频重复字段(如状态码、设备ID、类目标识)的
享元模式摘要 享元模式是一种结构型设计模式,通过共享相似对象中的可复用部分来减少内存占用。它区分内在状态(可共享)和外在状态(不可共享),将共享部分集中管理,非共享部分由调用方传入。典型应用场景如地图标记点渲染,相同类型的标记共享图标、颜色等样式信息,避免重复创建。实现包含享元对象、享元工厂和上下文对象三个关键角色,工厂负责复用控制。Java中的Integer.valueOf()就是享元模式的实例