用于自动资源释放的java技术? “迅速清理”?

我正在向Java移植一些C ++代码,这些代码使用非常常见的C ++技巧来分配堆栈上的对象(它恰好实现了UDP连接),它具有一些内部状态信息(这里是UDP套接字)。 在范围内,该对象用于执行各种操作(发送和接收UDP消息)。 好处是当控件离开这个作用域时,对象的析构函数将被运行,这可以指望自动导致释放对象的内部资源(在这种情况下,我确保套接字被关闭,以便我可以重用它的地址和程序其他部分的端口号)。

在试图弄清楚如何做到这一点时,我已经知道Java没有析构函数,“敲定”不会做我想要的,等等。

当然有一些同样聪明的技术在Java中完成同样的事情? 我意识到我可以添加一个“close()”方法并尝试确保它总是在适当的时候被调用,并且我进一步意识到这可能在Java中比在C ++中更容易和可靠地完成。 但我真的必须走那条路吗?

我相信Java 7支持自动资源块管理 ,这可能是您正在寻找的。

在代码中有一个finally {}块,用于关闭连接并使其为空。 这将使其有资格进行垃圾收集。 多数民众赞成你可以做的。

Java将自动清除everythibg并引用一个引用,以及所谓的“孤岛”,这是通过自动垃圾收集完成的。 您可以建议JVM在任何时候收集,但不保证它会符合要求。 唯一的保证是,在JVM耗尽内存之前,它会尽力清理它所能做的一切。

在SO上进行简单搜索就会发现有关同一主题的大量问题和答案。 我冒昧地复制了一些多汁的并将它们发布在这里。

Java中是否有C ++析构函数?

是否有Java的析构函数?

为什么Java没有像C ++这样的析构函数?

在Java中清理Object的最佳方法是什么?

你如何用Java编写解构函数?

我是一个步行搜索引擎。