Вы когда-либо использовали PhantomReference в каком-либо проекте?

Сделайте это:

.rightColumn *,
td.rightColumn * {
  margin: 0;
  padding: 0;
}

Приоритет в CSS выглядит следующим образом:

  • Если какое-то правило имеет идентификатор, то оно будет предшествовать чему-либо еще.
  • Если какое-то правило имеет атрибут класса, оно будет предшествовать правилам только для тегов.
  • Если два правила имеют оба идентификатора или метки, то их число развязывает «бой».

Пример:


Несмотря на то, что у вашего div есть и ID, и класс, правило ID переопределит правило .class.

Чтобы узнать больше о приоритетах правил CSS, я бы порекомендовал http://www.w3.org/TR/CSS2/cascade.html#specificity .

82
задан Nathan 26 August 2017 в 00:18
поделиться

3 ответа

Я использовал PhantomReference в ] упрощенный, очень специализированный вид профилировщика памяти для отслеживания создания и уничтожения объектов. Мне они были нужны, чтобы отслеживать разрушения. Но подход устарел. (Он был написан в 2004 году для J2SE 1.4.) Профессиональные инструменты профилирования намного более мощные и надежные, и для этого также могут использоваться новые функции Java 5, такие как JMX или агенты и JVMTI.

PhantomReference s (всегда используется вместе с очередью ссылок) превосходит finalize , который имеет некоторые проблемы, и поэтому его следует избегать. В основном делая объекты снова доступными. Этого можно было бы избежать с помощью идиомы-хранителя финализатора (-> подробнее см. «Эффективная Java»). Так что они тоже новая доработка .

Кроме того, PhantomReference s

позволяют точно определить, когда объект был удален из памяти. Oни на самом деле единственный способ определить это. Это обычно не так полезно, но может пригодиться при определенных обстоятельствах как манипулировать большими изображениями: если вы точно знаете, что изображение должно быть собранный мусор, вы можете подождать, пока он действительно будет собран, прежде чем пытаться загрузите следующее изображение и, следовательно, сделайте ужасный OutOfMemoryError меньше скорее всего. (Цитата из enicholas .)

И, как psd написал первым, у Роеди Грина есть хорошее резюме ссылок .

46
ответ дан 24 November 2019 в 09:20
поделиться

Общее описание таблицы, нарезанной кубиками , из Глоссария Java .

Что, конечно, совпадает с документацией PhantomReference :

Фантомные ссылочные объекты, которые ставятся в очередь после того, как сборщик определяет, что их референты могут быть возвращены в противном случае. Фантомные ссылки чаще всего используются для планирования предварительных действий по очистке более гибким способом, чем это возможно с помощью механизма финализации Java.

И последнее, но не менее важное: (Но чтобы ответить на вопрос, я когда-либо использовал только WeakReferences.)

21
ответ дан 24 November 2019 в 09:20
поделиться

Обычно используется WeakReference , где PhantomReference более подходит. Это позволяет избежать некоторых проблем, связанных с возможностью воскрешать объекты после того, как WeakReference очищается / помещается в очередь сборщиком мусора. Обычно разница не имеет значения, потому что люди не играют в глупых жук.

Использование PhantomReference имеет тенденцию быть немного более навязчивым, поскольку вы не можете притвориться, что метод get работает . Вы не можете, например, написать Phantom [Identity] HashMap .

2
ответ дан 24 November 2019 в 09:20
поделиться
Другие вопросы по тегам:

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