我有一个基本的SpringBoot 2.1.5.RELEASE应用程序。使用Spring Initializer,JPA,嵌入式Tomcat。
就Java垃圾收集而言,我猜该服务的选项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是首选。