Деструктор - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > Java

Java В данном форуме вы сможете найти много полезной информации по платформе Java. Подробные статьи, исходные коды и конечно учебники как для новичков так и профессиональных Java разработчиков вы найдёте здесь. Если у вас есть вопрос или хотите поделится своими наработками, пожалуйста, делайте это в этой теме.

Ответ
Опции темы
Непрочитано 02.04.2015, 02:40   #1
Аватар для Gattsu
Пользователь

Автор темы (Топик Стартер) Деструктор

Что-то лазил, смотрел, увидел такое

Может кому пригодится

PHP код:

import sun
.misc.Cleaner

class Test {
 private final 
Cleaner cleaner;

 public 
Test() {
  
cleaner Cleaner.create(this, () -> {
   
//Destructor
  
}); 
 }


Destructor вызывается при обработке GC, когда удаляется объект Test
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 02.04.2015, 09:39   #2
Аватар для n3k0nation
Antihero

По умолчанию Re: Деструктор

Им тут не пахнет даже близко (деструктором), т.к. в момент обработки очереди фантомных ссылок, обьект уже может быть уничтожен, либо не уничтожен, как повезет (если мне память не изменяет).
Обычная фантомная ссылка с очередью и уже реализованный поток для событий этой очереди. Только вот поток интернальный (точнее АПИ, соотв. его использует внутр. часть JVM), из-за чего могут возникнуть различные интересные вещи, если повесить тяжелое событие (например: замедление очистки нативных буферов а-ля general buffer).

Намного ближе к деструктору обычная финализация, однако, через нее можно оживить обьект (в зависимости кривизны рук и задачи), ну и плюс, оно повесится на нативный поток финализации, который работает совместно с GC, из-за чего можно серьезно замедлить работу всей JVM. Из еще одного очевидного минуса - обьект не сразу уничтожается после финализации.

Если уж так нужны фантомные ссылки в своем приложении, то почему бы не использовать их напрямую? В чем, собственно, проблема?

P.S: в internal API есть еще очень много интересных штук, например, получение а-ля стека - каллеров метода через рефлекшен и закрытие от таких вещей через сенсетив, это как пример
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 02.04.2015, 11:11   #3
Аватар для Gattsu
Пользователь

Автор темы (Топик Стартер) Re: Деструктор

Pointer*Rage, да действительно, ну я увидел это в связке с Unsafe, и в документации написанно, что не является заменой финализации, не знаю я вообще в джаве не использую финалайз, можно отдохнуть от ручной очистки , а это заинтриговала мою душонку.


код:
Свернуть ↑Развернуть ↓


оно тронуло меня до слез.

Только для грациозных леблядей.
doc:
Свернуть ↑Развернуть ↓


ПС С кривыми руками GC будет лагать сам собой.

Ну и назвал тему деструктор пафос нагоняю, интрига
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 06:29. Часовой пояс GMT +3.

Вверх