Java - сборщики мусора JVM в Java8 - PullRequest
0 голосов
/ 04 июня 2019

У меня есть базовое приложение SpringBoot 2.1.5.RELEASE.Использование Spring Initializer, 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());


    }

1 Ответ

0 голосов
/ 19 июня 2019

С точки зрения реализации JVM единственное отличие состоит в объявлении новой ссылки на возвращаемый объект. Следовательно, ни один новый объект не создается ни в одном случае, и новая память не используется. С точки зрения кодирования, вариант B является предпочтительным.

...