ehcache - превышен лимит накладных расходов GC - PullRequest
0 голосов
/ 01 февраля 2019

У нас проблема с кэшированием объекта gson с использованием ehcache.Количество объектов gson начинает увеличиваться, и когда GC выполняется, ничего не происходит.Подсчет объектов продолжается до тех пор, пока не будет превышен предел служебных данных GC.

Код 1:

    @RequestMapping(value = "/search2")
    @Cacheable(value = "halfHourCache", keyGenerator = "haodfKeyGenerator")
    @ResponseBody
    public Object search2(BizData bizData, Page page, String sourceType)  {
        return SearchSourceRunner.search(bizData, page, sourceType, DiseaseKeyWorldFilter.class);
    }

Это монитор кучи JVM:

enter image description here

Но если мы кешируем String вместо объекта gson, куча в порядке.Кэшированные объекты String могут быть очищены с помощью GC.

Код2

    @RequestMapping(value = "/search")
    @Cacheable(value = "halfHourCache", keyGenerator = "haodfKeyGenerator")
    public ResponseEntity<String> search(BizData bizData, Page page, String sourceType)  {
        return new ResponseEntity<>(new Gson().toJson(SearchSourceRunner.search(bizData, page, sourceType, DiseaseKeyWorldFilter.class)), HttpStatus.OK);
    }

Вопрос:

Что такоеразница между Code1 и Code2?Почему Code2 может работать нормально, но Code1 получает исключение из-за превышения предельных значений GC?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...