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

时间:2011-07-08 18:14:15

标签: java

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

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

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

4 个答案:

答案 0 :(得分:2)

我相信Java 7支持Automatic Resource Block Management,这可能正是您所寻找的。

答案 1 :(得分:1)

在代码中有一个finally {}块,用于关闭连接并使其为空。这将使其有资格进行垃圾收集。那就是你所能做的一切。

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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

Is there C++ destructor equivalent in Java?

Is there a destructor for Java?

Why does Java not have any destructor like C++?

What is the best way to clean up an Object in Java?

How do you write a deconstructor in Java?

我是一个步行搜索引擎。