EHCache SizeOf предупреждение

Използвам EHCache версия 2.6.9 с Hibernate 4. Виждам следното предупреждение в регистрационните файлове:

net.sf.ehcache.pool.SizeOf.ObjectGraphWalker checkMaxDepth конфигурираното ограничение от 1000 препратки към обекти беше достигнато при опит за изчисляване на размера на графиката на обекта....

Не зададох ограничение до 1000. Въпреки това, след като видях това предупреждение, дефинирах sizeOfPolicy на 10000. Все още обаче виждам предупреждението.

net.sf.ehcache.pool.SizeOf deepsize на конфигурирания лимит от 1000 препратки към обекти беше достигнат при опит за изчисляване

  1. Моля, предложете възможното решение?
  2. Какво е въздействието, ако не поправя това предупреждение?
  3. Трябва ли да пренебрегна тези предупреждения, като поставя анотация @Ignoresizeof върху обектите на модела? Ако да, какво е въздействието?

person ramesh    schedule 27.10.2017    source източник


Отговори (3)


Отговори на вашите въпроси:

  1. DeepSize показва, че кеширате доста голяма обектна графика - повече от 10 000 различни обекта.
  2. Изчисляването на размера на кеша ще бъде изключено, в най-лошия случай ще останете без памет, преди кешът да започне да се изважда.
  3. Можете да направите това, но отново, освен ако това не са споделени обекти, които не трябва да се броят, това ще обърка изчислението на размера.
person Louis Jacomet    schedule 06.11.2017

Магическото число „1000“ е дълбочината по подразбиране, която ehCache преминава, преди да регистрира предупредително съобщение и след това да продължи да оразмерява графиката на обекта. (Изглежда, че са въвели това от ehCache версия 2.5.0). Вижте тази връзка по-долу:

http://grepcode.com/file/repo1.maven.org/maven2/net.sf.ehcache/ehcache-core/2.6.2/net/sf/ehcache/config/SizeOfPolicyConfiguration.java/

Това поведение по подразбиране обаче може да бъде променено чрез правилни директиви за конфигурация. За версията, която споменахте, проверете раздела „Конфигурация за ограничаване на графиката на преминатия обект“ от официалния документ по-долу:

http://www.ehcache.org/documentation/ehcache-2.6.x-documentation.pdf

И виждам, че @Louis отговори на всичките ви въпроси по ред. Може да се наложи да изпълните някои тестове (може да са тестове за натоварване/производителност), за да видите докъде искате да контролирате дълбочината на преминаване, за да го настроите въз основа на поведението и нуждите на вашето приложение.

person Chaithu Narayana    schedule 15.05.2018

Никой не обърна внимание на проблема с Hibernate във вашия въпрос.

Проблемът, който виждате, е доста вероятно, защото компонентът SizeOf преминава през части от инфраструктурата на Hibernate, като например сесия.

Това се адресира от FilterConfigurators в sizeof. Разклоних хранилището на ehcache-sizeof-hibernate, което е насочено към Hibernate 4, и го поправих, за да работи за Hibernate 5 тук

person NealeU    schedule 03.01.2021