Можете ли вы дать мне один пример для моего вопроса?
Какой метод в Java используется для уничтожения ваших объектов
Ответ 1
Извините, но на Java не существует "свободного" или "распоряжающегося" эквивалента.
Лучшее, что вы можете сделать, это просто установить для объекта значение null (удаляет ссылку). Затем явно сообщите сборщику мусора, что вы собираетесь rambo (его где-то в java.lang.Runtime
).
Ответ 2
Память, занятая объектами Java, которые больше не доступны, может быть восстановлена виртуальной машиной сборщик мусора. Как отмечали другие, это автоматически. Напротив, нормальная работа программы может выделять определенные системные ресурсы, которые должны быть явно освобождены. Примером могут служить собственные ресурсы экрана. Частичный список таких методов включает в себя следующие:
java.awt.Component.BltBufferStrategy#dispose() java.awt.Component.FlipBufferStrategy#dispose() java.awt.CompositeContext#dispose() java.awt.Graphics#dispose() java.awt.im.InputContext#dispose() java.awt.im.spi.InputMethod#dispose() java.awt.image.BufferStrategy#dispose() java.awt.Image#flush() java.awt.PaintContext#dispose() java.awt.Window#dispose() java.io.InputStream#close()* java.io.OutputStream#close()* java.sql.Connection#close() java.util.Timer#cancel() javax.imageio.ImageReader#dispose() javax.imageio.ImageWriter#dispose() javax.print.StreamPrintService#dispose() javax.security.sasl.SaslClient#dispose() javax.security.sasl.SaslServer#dispose() javax.swing.DebugGraphics#dispose() javax.swing.JInternalFrame#dispose() org.ietf.jgss.GSSContext#dispose() org.ietf.jgss.GSSCredential#dispose() * Includes subclasses
Ответ 3
Не существует метода как такового. Метод finalize()
, определенный в верхнем уровне Object
, может быть вызван, когда объект освобождается сборщиком мусора, но это не то поведение, на которое вы можете положиться.
Ответ 4
Java не поддерживает детерминированное завершение экземпляра (т.е. деструкторы С++). Java имеет сборщик мусора, который может быть вызван вами (например, этот Runtime.getRuntime().gc()
), но время, затраченное на сбор мусора, как правило, лучше всего работает, когда вы оставляете только очистку памяти.
Ответ 5
Это объясняет, как работает сбор мусора (почему вы не должны явно удалять объекты на Java): http://web.archive.org/web/20080205091525/http://chaoticjava.com/posts/how-does-garbage-collection-work/
Проверьте это, задайте вопрос, если это поможет.
Ответ 6
Java автоматически обрабатывает все распределение и освобождение динамической памяти. По существу, любая память, которая больше не ссылается на именованную переменную, становится пригодной для сбора мусора (нет анонимных переменных). Это будет тот случай, когда все переменные, относящиеся к этой памяти, будут установлены на что-то еще или выходят за рамки.
Сбор мусора будет происходить автоматически, но нет конкретного времени, в течение которого любая часть памяти будет фактически освобождена.
Большинство людей не должны знать больше, но ссылка, ранее размещенная corprew, дает приятное количество деталей в интуитивно понятном формате для всех заинтересованы в обучении больше.
Ответ 7
"object destory" автоматически выполняется jvm в java, когда объект имеет право на сборщик мусора.
например..
public class gc{
public static void main(String []s){
gc obj=new gc();
gc obj1=new gc();
// if u made manually obj1=null. its eligible for garbage collection else jvm done automatically when this obj1 not in use..
obj1=null;
}
}