知识卡片
懒初始化省空间
内容
如果大量对象长期处于简单状态,可以把昂贵字段延迟到真正需要时再创建。孤立容器不分配组列表,就能显著降低空对象群的内存占用。发散:默认值本身也可以是一种状态编码。
参考来源
- 位置:《你真的会写代码吗-2021》第4章《宝贵的内存:空间效率》"4.1 使用轻量级集合(Memory1)"一节(源文件:_epub-src/OEBPS/Text/0014.xhtml)
- 结论依据:原文明确"如果有许多容器从来不会连接到某个容器组,就可以等实际需要时才实例化这个List,以节省空间(也就是懒初始化)……如果group字段等于null,那么就代表它是一个孤立的容器",并在对账表中确认"所有的容器都是孤立的,所以永远不会分配列表"带来的显著节约。
- 原始内容:此外,如果有许多容器从来不会连接到某个容器组,就可以等实际需要时才实例化这个List,以节省空间(也就是懒初始化,lazy initialization)。换句话说,如果group字段等于null,那么就代表它是一个孤立的容器……特别是仅在首次需要时才为列表分配内存的想法,显然带来了极大的节约。