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 是首选。
我有一个基本的 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 是首选。