|
|
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
На сколько мне измесно менеджер кучи удаляет объект(с вызовам метода finalize()) из памяти по мере необходимости в памяти (т.е. не сразу при потере ссылки на объект, алишь тогда когда нехвотает памяти для создания друвого объекта). Можно ли как нибудь сказать компилятору об том что при утрате всех ссылок на объект удалять его и запускать какойнибудь метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 13:32 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
не когда необходимость в памяти, а по расписанию System.gc() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 14:28 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanxНа сколько мне измесно менеджер кучи удаляет объект(с вызовам метода finalize()) из памяти по мере необходимости в памяти (т.е. не сразу при потере ссылки на объект, алишь тогда когда нехвотает памяти для создания друвого объекта). Можно ли как нибудь сказать компилятору об том что при утрате всех ссылок на объект удалять его и запускать какойнибудь метод. А зачем? Определи явно метод вроде dispose и запускай его сам. Извраты со сборщиком мусора не поощряются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 14:29 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
Naugне когда необходимость в памяти, а по расписанию System.gc() Зависит от модели сбоорки мусора... есть и по расписанию, и при возникновении необходимости в памяти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 14:30 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
ЗашедшийА зачем? Определи явно метод вроде dispose и запускай его сам. Извраты со сборщиком мусора не поощряются. Удобно очень удобно. аналогом деструктора является блок finally. Посмотри как часто ты пишеш этот оператор в программе аналогом его в С++ является деструктор, причем он пишется\ один раз при декларировании в java при каждом использовании нужно дернуть dispose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 14:33 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
Евгений Путилин ЗашедшийА зачем? Определи явно метод вроде dispose и запускай его сам. Извраты со сборщиком мусора не поощряются. Удобно очень удобно. аналогом деструктора является блок finally. Посмотри как часто ты пишеш этот оператор в программе аналогом его в С++ является деструктор, причем он пишется\ один раз при декларировании в java при каждом использовании нужно дернуть dispose Задолбаешься делать семантику значений для всех классов в программе. Если без семантики значений - то придется размещать в куче. Это тянет с собой смарт-указатели, которые размещают в куче дополнительный блок для счетчика ссылок и кроме того должны как-то считать эти ссылки эффективно в однопоточной среде и безопасно в многопоточной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 14:59 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanxНа сколько мне измесно менеджер кучи удаляет объект(с вызовам метода finalize()) из памяти по мере необходимости в памяти (т.е. не сразу при потере ссылки на объект, алишь тогда когда нехвотает памяти для создания друвого объекта). Можно ли как нибудь сказать компилятору об том что при утрате всех ссылок на объект удалять его и запускать какойнибудь метод.Тебе для чего это? Пишешь под J2ME? Прога тормозит? Или J2SE память за 300Мб жрет? Так перепиши ее чтоб не жрала. Ты не с той стороны начинаешь программировать на жаве, ерундой не занимайся. Или возвращайся на свой цпп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 15:19 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
Евгений Путилин ЗашедшийА зачем? Определи явно метод вроде dispose и запускай его сам. Извраты со сборщиком мусора не поощряются. Удобно очень удобно. аналогом деструктора является блок finally. Посмотри как часто ты пишеш этот оператор в программе аналогом его в С++ является деструктор, причем он пишется\ один раз при декларировании в java при каждом использовании нужно дернуть dispose В большинстве случаев никакие деструкторы в Яве просто не нужны, все само разрушится как надо. Деструкторы надо применять только при запросах внешних ресурсов - коннектах к базе данных, к потоку файлового ввода-вывода и тыпы. Если таких объектов в софтине больше, чем пальцев на одной руке - на 99% проблема в кривой архитектуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 15:38 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
to диструктор: диструктор sysmanxНа сколько мне измесно менеджер кучи удаляет объект(с вызовам метода finalize()) из памяти по мере необходимости в памяти (т.е. не сразу при потере ссылки на объект, алишь тогда когда нехвотает памяти для создания друвого объекта). Можно ли как нибудь сказать компилятору об том что при утрате всех ссылок на объект удалять его и запускать какойнибудь метод.Тебе для чего это? Пишешь под J2ME? Прога тормозит? Или J2SE память за 300Мб жрет? Так перепиши ее чтоб не жрала. Ты не с той стороны начинаешь программировать на жаве, ерундой не занимайся. Или возвращайся на свой цпп Просто так, конкретной задачи нет , но интересно почему не реализовали такую вазможность на таком мощном языке, а может я просто незнаю и хочю узнать. to All: Вот например ктонибудь знает как работает распределитель памяти по объекты: я предполагаю что гдето храница список указателей ссылающися на объект, а при присвоению одному из указателей null (или друвого объекта), он удаляется из этого списка. Если это так то почемубы не запускать деструктор автоматически при последнем удалении указателя из списка (список станововится пустой). Я прав в догадках или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 15:43 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
сори диструктор :) to Зашедший. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 15:45 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
сборка мусора живёт в отдельном треди и время от времени смотрит нужна ли уборка. А отдельный листенер на каждый евент изменения ссылки вешать это позамороченней будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 15:52 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanxВот например ктонибудь знает как работает распределитель памяти по объекты: я предполагаю что гдето храница список указателей ссылающися на объект, а при присвоению одному из указателей null (или друвого объекта), он удаляется из этого списка. Если это так то почемубы не запускать деструктор автоматически при последнем удалении указателя из списка (список станововится пустой). Я прав в догадках или нет? У Дональда Кнута в первой книжке приведен алгоритм, который без привлечения доп. памяти трассирует все ссылки в произвольном графе, и отслоившиеся куски помечает как мусор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 16:16 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanx, ты не прав и на счет того, "как работает распределитель памяти", и на счет finalize. Но ты прав в том, что использование деструкторов в C++ очень удобно тем, что они автоматически вызываются при потере контекста. Но Java не C++ и не все приемы программирования, пригодные для C++, к ней подходят. Равно как и наоборот. Деструкторов в Java нет из-за того, что управление памятью сделано совершенно по-другому. И метод finalize это не замена деструкторов, он может вообще никогда не вызваться (сделай тестовый пример и увидишь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 16:33 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
to Ненавижу регистрацию. Я знаю что finalize() не деструктор. Просто в данной теме хочю узнать можноли реализовать настоящий деструктор на Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 16:38 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanxto Ненавижу регистрацию. Я знаю что finalize() не деструктор. Просто в данной теме хочю узнать можноли реализовать настоящий деструктор на Java. "Настоящий" - нет ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 17:33 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanxto Ненавижу регистрацию. Я знаю что finalize() не деструктор. Просто в данной теме хочю узнать можноли реализовать настоящий деструктор на Java. Давайте разберемся, что делает деструктор (в C++). Лично я припоминаю два случая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Второй случай мало чем отличается от вызова специального метода (например, close). Приведите пример кода (на Java), в котором вы хотите иметь поведение настоящего деструктора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 17:44 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanx Просто так, конкретной задачи нет , но интересно почему не реализовали такую вазможность на таком мощном языке, а может я просто незнаю и хочю узнать. Если это так то почемубы не запускать деструктор автоматически при последнем удалении указателя из списка (список станововится пустой). Я прав в догадках или нет?Не забивай голову, как раз потому что язык такой мощный, сборщик мусора работает очень сложно. Работает постоянно, в своем потоке, имеет 2 фазы, одна собирает мусор быстро, маложившие и быстросдохшие объекты, другая фаза запускается реже, работает дольше и собирает все умершие объекты, а долгоживущие перемещает в отдельную область памяти. Ну и т.д. и т.п. Тебе оно надо, сложностями голову забивать? За тебя и за меня уже все разработали умные дяди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 18:02 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
Ненавижу регистрациюДавайте разберемся, что делает деструктор (в C++). Лично я припоминаю два случая: Код: plaintext 1. 2. 3. 4. Приведите пример кода (на Java), в котором вы хотите иметь поведение настоящего деструктора. Когда люди пишут что хотят иметь деструктор на java то имеют ввиду что им нужно поведение которе обеспечивает случай описанны тобой в первом варианте. А это обеспечивает блок java finally, т.е. то код который отработае влюбом случае при выходе из контекста кода. Это очень очень удобно то что в java достигается за счет констуркций языка например synhronized(object){...} в С++ реализуется за счет конструкторов и деструкторов. Это надо знать и по другому писать программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 18:52 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
to Ненавижу регистрацию: Первый случай. При потере области видимости нужно освободить ресурсы. to диструктор: synhronized(object){...} - я понимаю блокирует объект для данного потока, пока данный поток не пройдёт критическую секцию({...}). Я прав?, и как он влияет на реализацию конструкторов и деструкторов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 19:23 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
sysmanxto Ненавижу регистрацию: Первый случай. При потере области видимости нужно освободить ресурсы. 1) Блок try-finally 2) Есть система Realtime Java (RTSJ), там чтобы избежать издержек на работу уборщика мусора и достичь гарантированных откликов есть Scoped куча - наверно там тоже что-то замутить можно. sysmanx to диструктор: synhronized(object){...} - я понимаю блокирует объект для данного потока, пока данный поток не пройдёт критическую секцию({...}). Я прав?, и как он влияет на реализацию конструкторов и деструкторов? Этот автор похоже не знает и С++ тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 20:05 |
|
||
|
Возможен ли диструктор в Java. (finalize())
|
|||
|---|---|---|---|
|
#18+
кроме System.gc() есть еще метод System.runFinalization() Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 08:30 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33641495&tid=2149675]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 579ms |

| 0 / 0 |
