powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / самый_ламерский_вопрос
25 сообщений из 26, страница 1 из 2
самый_ламерский_вопрос
    #34776104
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда garbage collector сможет забрать объект?
если ссылка на него все ещё имеется но не используется, он не сможет ее забрать?

например

psvm () {
MyClass mc = new MyClass();

и тут 1000000000000 действий которые жрут память, mc вообще никогда и нигде больше по коду не используется
}

gc() никогда его не релизнет?
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776105
Primax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по идее да(т.е. не удалит из памяти)
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776106
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему? он же компилит все, знает что и куда пойдет...
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776109
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока метод не завершится объект собран не будет
чтобы он собрался надо явно приравнять его к null
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776111
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно.
я проиграл. :)
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776116
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Who am Iясно.
я проиграл. :)

Не факт. Помимо сборщика мусора еще JIT есть с хитрыми оптимизациями, который вообще такую инстанцианцию может выкинуть из исполняемого кода. Может быть ленивая инициализация. Наконец, сам gc скорее всего будет вызван до окончания метода. Если этот gc использует генерации (а сановский именно таков), то твой инстанс - первый кандидат на отстрел.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776117
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мне сделать так чтобы он очистил его? (Переопределил finalize и поставил туда sout)
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34776839
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Who am IКак мне сделать так чтобы он очистил его? (Переопределил finalize и поставил туда sout)

Никак. В яве нет ручного управления памятью. Метод finalize может и вовсе не быть вызван - HotSpot - хитрая штука.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34777561
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Who am Iкогда garbage collector сможет забрать объект?
если ссылка на него все ещё имеется но не используется, он не сможет ее забрать?

например

Код: plaintext
1.
2.
3.
4.
psvm () {
  MyClass mc =  new  MyClass(); 

  и тут  1000000000000  действий которые жрут память, mc вообще никогда и нигде больше по коду не используется
}

gc() никогда его не релизнет?

Попробуй использовать в качестве ссылки на mc - SoftReference, в этом случае сборщик мусора удалит сей объект если не хватит памяти.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34777576
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PassingBy
Может быть ленивая инициализация.
А можно поподробнее... ?
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34778655
Primax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Who am IКак мне сделать так чтобы он очистил его? (Переопределил finalize и поставил туда sout)
ээ..что такое sout ?
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779085
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Primax Who am IКак мне сделать так чтобы он очистил его? (Переопределил finalize и поставил туда sout)
ээ..что такое sout ?

System.out("Got it!");

Чтобы было видно если объект был собран коллектором.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779250
Tsahes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Who am IКак мне сделать так чтобы он очистил его? (Переопределил finalize и поставил туда sout)
Вообще, вызов
Код: plaintext
System.gc()
предлагает JVM запустить gc на сбор мусора. Но гарантий, что gc действительно будет запущен, нет.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779253
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsahes Who am IКак мне сделать так чтобы он очистил его? (Переопределил finalize и поставил туда sout)
Вообще, вызов
Код: plaintext
System.gc()
предлагает JVM запустить gc на сбор мусора. Но гарантий, что gc действительно будет запущен, нет.

Я все это делаю + загружаю память по максимуму.
sout не происходит.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779371
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй написать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
psvm () {
MyClass mc =  new  MyClass(); 

mc= null ;

и тут  1000000000000  действий которые жрут память, mc вообще никогда и нигде больше по коду не используется
}
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779416
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
untitledпопробуй написать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
psvm () {
MyClass mc =  new  MyClass(); 

mc= null ;

и тут  1000000000000  действий которые жрут память, mc вообще никогда и нигде больше по коду не используется
}


Интересно, а чем занимается класс MyClass? Он действительно так много ест памяти на самом деле? Может утечки памяти в другом месте?
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779423
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage untitledпопробуй написать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
psvm () {
MyClass mc =  new  MyClass(); 

mc= null ;

и тут  1000000000000  действий которые жрут память, mc вообще никогда и нигде больше по коду не используется
}


Интересно, а чем занимается класс MyClass? Он действительно так много ест памяти на самом деле? Может утечки памяти в другом месте?

Прошу прощения если говорю непонятно. :)
Я знаю что если присвоить null, то коллектор заберет его.
Вопрос в том что он не забирает его если на него есть ссылка. Почему? Ведь логично же что уже можно его забрать. :) Вот в чем вопрос.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779433
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Who am I
Прошу прощения если говорю непонятно. :)
Я знаю что если присвоить null, то коллектор заберет его.
Вопрос в том что он не забирает его если на него есть ссылка. Почему? Ведь логично же что уже можно его забрать. :) Вот в чем вопрос.
Ну вот поэтому, как мне кажется, для ситуаций, которые Вы подняли Вашим вопросом, и существуют Sowt- и WeakReference.. Вы сами проектируете ваше приложение, структуру и алгоритмы, и поэтому на Вас также лежит ответственность за распредление ресурсов.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779440
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage Who am I
Прошу прощения если говорю непонятно. :)
Я знаю что если присвоить null, то коллектор заберет его.
Вопрос в том что он не забирает его если на него есть ссылка. Почему? Ведь логично же что уже можно его забрать. :) Вот в чем вопрос.
Ну вот поэтому, как мне кажется, для ситуаций, которые Вы подняли Вашим вопросом, и существуют Sowt- и WeakReference.. Вы сами проектируете ваше приложение, структуру и алгоритмы, и поэтому на Вас также лежит ответственность за распредление ресурсов.

Да, я уже понял. Спасибо большое.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779554
chand0s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassingBy
Если этот gc использует генерации (а сановский именно таков), то твой инстанс - первый кандидат на отстрел.
А что это за штука такая - генерации?
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34779560
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PassingBy
Может быть ленивая инициализация.
А также хотелось бы поподробнее узнать что это такое?
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34782330
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chand0s PassingBy
Если этот gc использует генерации (а сановский именно таков), то твой инстанс - первый кандидат на отстрел.
А что это за штука такая - генерации?

http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html#1.1.%20Generations%7Coutline - тут все рассказано
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34782334
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage PassingBy
Может быть ленивая инициализация.
А также хотелось бы поподробнее узнать что это такое?

Это я ерунду сказал :) Ява - жадный язык, и никакой HotSpot этого не изменит. Но автор топика может тем не менее надеяться на dead code elimination после очередной перекомпиляции.
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34784467
alienslon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если mc нигде не используется почему бы не сделать mc=NULL и потом System.gc();
...
Рейтинг: 0 / 0
самый_ламерский_вопрос
    #34785761
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alienslonесли mc нигде не используется почему бы не сделать mc=NULL и потом System.gc();

это был упрощенный пример.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / самый_ламерский_вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]