没有重启应用程序可以重新启动某些处理的清除/免费资源吗?

时间:2011-06-23 13:33:06

标签: java resources

我正在做一个自动运行的webcrawler。在某些时候,我想停止它,更改一些设置并重新开始爬行。

我担心资源问题。我可以释放我创建的对象,但我不知道Java使用的对象。做一些调试,我发现它比应用程序启动时有更多的类。

有一些技术/方法/方法来解放这些吗?我需要担心这个吗?

2 个答案:

答案 0 :(得分:0)

  

有一些技术/方法/方法来解放这些吗?

理论上,您可以序列化应用程序的关键数据结构,重新启动并重新加载序列化数据结构。

在实践中,必须编写应用程序才能执行此操作。您可能必须重新构建现有(不可重新启动)的应用程序才能实现此目的。因此,更好的想法是将重要的应用程序状态存储在数据库表中,以便您可以随意停止和重新启动...并在应用程序崩溃或电源故障后继续存在。

  

我需要担心这个吗?

这取决于您/取决于您的要求。但是我会避免以这种方式实现应用程序。

答案 1 :(得分:0)

我认为您需要更好地了解创建哪些对象以及哪些对象保留在内存中。分析器工具可以帮助您 - 其中许多工具可以让您拍摄内存快照,执行某些操作,然后将当前状态与快照进行比较。这突出了可能的内存泄漏。

此外,请确保在查看内存状态之前显式运行垃圾收集器 - 否则您可能会看到许多实际未引用的对象,并将被下一个GC收集。

我不担心JVM分配的资源。只要你释放分配的所有资源,你应该没问题 - 而且一个分析器会帮助你确保你确实释放它们。