JAVA享元模式思想减少内存占用

一. 场景

  • 要RPC发送大量通知消息,每条通知消息都是一个对象,每条通知消息的大部分内容都是一样的

二.实现

享元模式 + @JsonUnwrapped(即扁平化对象,具体场景具体考虑)

先偷一张享元模式的UML图

偷来的图片.png

代码示例

public class SubConcrete{
	
	@JsonUnwrapped
	private FatherConcrete shared;
	private String subElements;

}

并不是纯享元模式,单纯借鉴部分思想

基于http的RPC,API接口

大部分相同的资源都在shared中,序列化打散。

三 为什么可以这样做,效果如何?

为什么可以这样做?

1.序列化后是没有状态的

2.可变属性较共享属性少

效果?

shared所占空间越多,SubConcrete越多,效果越好

四 你还要考虑的事

不要一股脑把所有要发送的对象堆到一起慢慢跑。即创即用即释放

手动赋null,真的不丢人

猜你喜欢

转载自www.cnblogs.com/tukjax/p/12892341.html
今日推荐