Здравствуйте, fflush, Вы писали:
F>Возник спор не на жизнь, а на смерть, приводит ли к потери памяти вызов эксепшена из конструктора в Java. Деструкторов-то понятно нет, но будет ли память из-под текущего объекта очищена, ведь объект фактически не существовал? F>Как проверить не знаю, может подскажете?
Конечно будет очищена, кто же такую личинку оставит? Если память была выделена под объект, но при инициализации объекта произошло исключение, то это никак не повлияет на работа GC. Если ссылок на объект не будет — он соберется. Если будут, то не соберется. Откуда утечке-то взяться?
Что значит "объект фактически не существовал". Память выделили? Выделили. Значит объект существовал. Пусть и с не валидными значениями. А перед выделением памяти происходит проверка. Если пямяти не хватает, то объект не будет создаваться.
В чем причина спора? Или 2 программиста на плюсах поспорили про объекты в яве?