| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > когда объект готов к удалению gc? |
| Автор: gr-dmitro 15.3.2006, 21:22 | ||||
| Учу Java. Готовился к собеседованию по тестам TestKing Sun Certified Programmer for Java 2 Platform 1.4 [310-035(v.8)] c http://itbooks.msk.ru/archives/ebooks/testking/ Не понимаю их ответов
Я считаю, что D. Но это не опечатка - есть ещё пару подобных вопросов/ответов. Как правильно? |
| Автор: LSD 15.3.2006, 21:30 |
| Правильный ответ C. Объект готов к удалению сборщиком мусора, когда на него не осталось ссылок (исключение: SoftReference, WeakReference и FantomReference, но это отдельный разговор). В строке 13 ссылка из переменной o дублируется в переменную oa[0], а затем возвращается из метода m(), и может продолжить сущетвовать дальше. При большом желании это можно даже доказать. |
| Автор: gr-dmitro 15.3.2006, 21:40 | ||||
Понял. Еще один момент, пожалуйста:
тогда тут C,D? |
| Автор: batigoal 15.3.2006, 21:44 |
| Я тоже считаю, что C. Какова же логика авторов теста? |
| Автор: LSD 15.3.2006, 22:01 |
| E, F Что-то меня смущают эти тесты... |
| Автор: gr-dmitro 15.3.2006, 22:03 | ||
Но ведь test более не хранит ссылку на экземпляр TestA. Значит, по идее, экземпляры TestA and TestB не доступны с текущего потока, и явл. "dead" |
| Автор: LSD 15.3.2006, 22:13 |
| Точно! Был не внимателен. Действительно ссылок не останется, так что C, D. |
| Автор: gr-dmitro 15.3.2006, 22:19 | ||
Да это только с gc проблемы, а в остальном - ничего, заковытистые All спасибо |
| Автор: allex 15.3.2006, 22:25 |
gr-dmitro, странно, что С, но F. По идее, в строке 15 создается три объекта разных классов. Ссылок на TestAll не будет, TestA и TestB будут ссылаться друг на друга. Документация к пакету java.lang.ref говорит, что
|
| Автор: Entry_N3 24.3.2007, 18:26 | ||
в догонку:
The Float object is, created in line 11, eligible for garbage collection after line 15. Это так? |
| Автор: powerOn 25.3.2007, 00:01 | ||
Тебе с английского перевести? В строке 11 создается объект и ссылка на него была присвоена переменной o В программе на объект созданный в строке 11, имеется одна ссылка: o. далее создается массив. потом нулевому элементу этого массива присваивается ссылка на объект созданный в строке 11. Теперь в программе на объект созданный в строке 11, имеется две ссылки: o и oa[0]. Далее обе ссылки зануляются: Теперь ссылок на объект, созданный в строке 11, нет, а значит он готов к удалению сборщиком мусора. |
| Автор: Entry_N3 25.3.2007, 12:10 |
| powerOn, классно описал |