微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在创建和返回集合时管理内存

如何解决在创建和返回集合时管理内存

我想知道在内存管理方面更好的编码方式,


    public class Cache {
      ......
      ......
      public List<EmployeeBDO> findEmployees(){
       ......
       List<EmployeeBDO> employees = new ArrayList<>();
       for (... : ...) {
                employees.add(...);
            }
       ......
       return employees;
      }
      
}

List<EmployeeBDO> employees = new ArrayList<>();
public class Cache {
      ......
      ......
      public List<EmployeeBDO> findEmployees(){
       ......
       employees.clear();
       for (... : ...) {
                employees.add(...);
            }
       ......
       return employees;
      }      
}

每 3000 万有一个刷新缓存,有 15000 名员工,我们将在下拉列表中显示

解决方法

与所有情况一样,答案是“这取决于……”

如果只有一个 Cache 对象并且只有一个线程在调用 findEmployees 方法,那么第二个选项更好。员工列表将在此处重复使用。

如果多个线程正在调用 findEmployees 方法,那么您只能使用第一个选项。使用多线程时,员工将在线程之间共享并导致数据竞争。

在决定哪种选项最适合内存管理之前,您需要测试性能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。