Java - Java8 中的 JVM 垃圾收集器

Java - JVM Garbage Collectors in Java8

我有一个基本的 SpringBoot 2.1.5.RELEASE 应用程序。使用 Spring 初始化程序,JPA,嵌入式 Tomcat。 在 Java Garbage Collection 方面,我猜服务的选项 B 比选项 A 好,因为对象不会保留在内存中,对吗?

选项A:

@Override
    public List<HotelPriceSummary> overRanked7d(User user) {

        List<HotelPriceSummary> overRanked7dList =

                allNonFavoritedHotels(user)
                        .parallelStream()
                        .filter(HotelPriceSummary.overRanked7dHotelsPredicate())                            
                        .sorted(comparing((HotelPriceSummary cps) -> cps.getDailyPercentageChange()).reversed())
                        .collect(toList());

        return overRanked7dList;
    }

选项 B:

@Override
    public List<HotelPriceSummary> overRanked7d(User user) {

        return

                allNonFavoritedHotels(user)
                        .parallelStream()
                        .filter(HotelPriceSummary.overRanked7dHotelsPredicate())                            
                        .sorted(comparing((HotelPriceSummary cps) -> cps.getDailyPercentageChange()).reversed())
                        .collect(toList());


    }

从 JVM 实现的角度来看,唯一的区别是声明对返回对象的新对象引用。因此,在这两种情况下都没有创建新对象,也没有使用新内存。 从编码的角度来看,选项 B 是首选。