用Java中的什么方法来破坏你的对象
你能举我一个例子吗?
对不起,但在Java中并没有真正的“免费”或“处置”等价物。
你可以做的最好的只是将对象设置为null(删除引用)。 然后明确地告诉垃圾收集器你要去rambo(它在java.lang.Runtime
某处)。
由不再可访问的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中#平齐() java.awt.PaintContext#的Dispose() java.awt.Window中的#的Dispose() 的java.io.InputStream#接近()* java.io.OutputStream中的#亲密()* java.sql.Connection中的#接近() java.util.Timer中#取消() 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() *包括子类
本身没有一种方法。 当对象被垃圾收集器解除分配时, 可以调用在顶层Object
定义的finalize()
方法,但这不是您可以依赖的行为。
Java不支持确定性实例定稿(即C ++的析构函数)。 Java有一个可供你调用的垃圾回收器(就像这个Runtime.getRuntime().gc()
),但是垃圾回收运行时往往在你单独离开内存清理的时候效果最好。
这解释了如何垃圾收集(为什么你不必在Java中显式删除对象)的作品: http : //web.archive.org/web/20080205091525/http : //chaoticjava.com/posts/how-does-garbage -collection工作/
检查出来,问一个后续的问题,如果它会帮助。
Java自动处理所有的dynamic内存分配和释放。 基本上,任何不再被命名variables引用的内存都有资格进行垃圾回收(没有匿名variables)。 当所有引用该内存的variables都被设置为其他内容或超出范围时,情况就是如此。
垃圾收集将自动发生,但没有具体的时间在哪一段内存将被实际释放。
大多数人不需要知道更多的东西,但是corprew以前发布的链接以直观的格式给予了有兴趣了解更多信息的人的大量细节。
在java中,“对象destory”是由jvm自动完成的,当对象符合垃圾收集器的条件时。
例如..
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; } }