google.common的guava依赖的partition分割产生的浅拷贝问题解决方案

@TOC

问题背景

使用google.common的guava依赖的partition分割产生的浅拷贝问题,如:
把userList集合分割成每个10000的小集合
List<List<User>> partitions = Lists.partition(userList, 10000);
在老年代中会越来越到,知道产生Full GC
如果直接partitions.get(0).clear() 或者 userList.clear() 都会导致原数据的丢失,因为这是浅拷贝的方式

解决方案

List<List<User>> partitions = Lists.partition(userList, 10000);
每次调用的时候进行深拷贝,使每个集合与原大集合partitions没有关系,这是clear就没有问题了

for (List<User> partition : partitions) {
     //进行深拷贝,使每个集合与原大集合partitions没有关系,这是clear就没有问题了
     doMethod(new ArrayList<>(partition ));
}
partitions.clear();
userList.clear();




作为程序员第 244 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha ...

Lyric: 说你不爱我

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容