Пароль Excel VBA через Hex Editor

В последнее время борясь с методами финализатора (чтобы избавиться от пулов соединений во время тестирования), я должен сказать, что финализатору не хватает многих вещей. Используя VisualVM для наблюдения, а также используя слабые ссылки для отслеживания фактического взаимодействия, я обнаружил, что в среде Java 8 выполняются следующие вещи (Oracle JDK, Ubuntu 15):

  • Finalize не вызывается немедленно Finalizer (GC part) индивидуально владеет эталоном неуловимо
  • По умолчанию сборщики пулов Garbage собирают недостижимые объекты
  • Finalize вызывается в массе, указывая на деталь реализации, что есть определенная фаза мусора сборщик освобождает ресурсы.
  • Calling System.gc () часто не приводит к тому, что объекты будут финализироваться чаще, это просто приводит к тому, что Finalizer быстрее узнает о недоступном объекте
  • Создание дампа потока почти всегда приводит к запуску финализатора из-за высокой накладной кучи во время выполнения дампа кучи или какого-либо другого внутреннего механизма
  • Швы финализации должны быть связаны требованиями памяти (освободить больше памяти) или список объектов, помеченных для финализации рост определенного внутреннего предела. Поэтому, если у вас есть много объектов, которые будут завершены, фаза завершения будет срабатывать чаще и раньше по сравнению с несколькими
  • . Были обстоятельства, при которых System.gc () запускает финализацию напрямую, но только если ссылка была местной и короткой жизнью. Это может быть связано с генерацией.

Final Thought

Метод Finalize ненадежен, но может использоваться только для одной вещи. Вы можете убедиться, что объект был закрыт или удален до сбора мусора, что позволяет реализовать отказоустойчивость, если обрабатываются объекты с более сложным жизненным циклом, включающие действие с истекшим сроком действия. Именно по этой причине я могу думать, что это стоит того, чтобы переопределить его.

29
задан McMillan Cheng 3 May 2018 в 15:31
поделиться