解决问题
大量相同(相似)小对象造成的内存占用问题。比如文本编辑器,如果对每个字符对生成一个对象(要涉及字符、字体等),将会是一个非常庞大的数据量。
flyWeight的本质是以时间换空间,类似于采用常量池的方式,将对象放大池子中,当需要使用该对象时,就建立一个引用,它可以极大提高系统的内存占用量,对java可以减少GC对性能的损耗。
应用场景
采用该模式,对对象有一定的要求:
大量相同(相似)小对象造成的内存占用问题。比如文本编辑器,如果对每个字符对生成一个对象(要涉及字符、字体等),将会是一个非常庞大的数据量。
flyWeight的本质是以时间换空间,类似于采用常量池的方式,将对象放大池子中,当需要使用该对象时,就建立一个引用,它可以极大提高系统的内存占用量,对java可以减少GC对性能的损耗。
采用该模式,对对象有一定的要求: