Общая память/ссылка Java пропускает шаблоны?

Диспетчеризация групповых действий с использованием store.dispatch не поддерживается текущими наборами избыточных команд. Обычно у вас есть mapDispatchToProps, где вы можете напечатать диспетчер как ThunkDispatch. Вы можете выполнять встроенное приведение, даже если оно уродливое, а приведение типа теряет безопасность типов. Смотрите этот ответ: Как отправить Action или ThunkAction (в TypeScript, с избыточным thunk)?

13
задан Petteri Hietavirta 22 March 2009 в 10:08
поделиться

3 ответа

Две ключевых "эффективных утечки" шаблоны, по моему опыту:

  • Статика и одиночные элементы, которые постепенно растут со временем. Это могло включать кэши, плохо реализованные и используемые пулы соединения, словари "каждого пользователя, которого мы видели начиная с запуска" и т.д.
  • Ссылки от долговечных объектов до объектов, которые были предназначены, чтобы быть недолгими. В C# это может произойти с событиями, и эквивалентный шаблон "наблюдатель" мог дать тот же вид эффекта в Java. В основном, если Вы просите, чтобы один объект (наблюдатель) наблюдал за другим (источник) затем, Вы обычно заканчиваете со ссылкой от источника до наблюдателя. Это может закончить тем, что было единственной "живой" ссылкой, но она будет жить пока источник.
  • Permgen протекает, если Вы продолжаете генерировать новый код динамично. Я нахожусь на более скалистой земле здесь, но я вполне уверен, я столкнулся с проблемами этот путь. Возможно, что это происходило частично из-за ошибок JRE, которые были с тех пор исправлены - это было слишком длинно, так как это, оказалось, для меня помнило наверняка.
  • Модульные тесты, которые содержат на состояние, могут продлиться дольше, чем Вы могли бы ожидать, потому что JUnit будет содержать на экземпляры тестового сценария. Снова я не могу помнить детали, но иногда это делает это стоящим имеющего явного "обнуления переменной" в разрушении, анахроничном, поскольку это смотрит.

Я не могу сказать, что регулярно находил, что утечки памяти проблема в Java (или.NET) все же.

18
ответ дан 1 December 2019 в 21:38
поделиться

Я не сказал бы, что это распространено - утечки очень редки в Java - но я видел утечку из-за хранения ссылки на нестатический внутренний класс, который не использовал внешний экземпляр, но содержал ссылку на него так или иначе.

6
ответ дан 1 December 2019 в 21:38
поделиться

Утечки PermGen могут произойти из-за:

  • потоков демонов, которые остаются активными после того, как ваше приложение не развернуто.
  • Перехватчики завершения работы, зарегистрированные с помощью переменных JVM
  • ThreadLocal, где значение имеет ссылка на класс, загруженный вашим загрузчиком классов

Все они связаны с веб-приложением. Этого не происходит в стандартных приложениях Java.

1
ответ дан 1 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: