从内存中转储hashmap,用于java进程

时间:2012-02-25 17:33:10

标签: java memory memory-management ram

我有一个 Java进程,已经运行了一个多星期。在这个过程中,我一直在处理一些数据,并且已经将一些中间结果存储到内存中的hashmap 中。

现在,由于代码中的一些错误,我需要停止该过程。但是,如果我杀死进程,那么我将丢失hashmap中的数据n将不得不再次重新处理它,下次我运行代码。

他们可以通过哪种方式在内存中显示 转储哈希地图 吗?

2 个答案:

答案 0 :(得分:1)

您可以使用各种工具(如分析器)触发内存转储。这是非常难以阅读的,我从来没有听说有人使用它来重新启动程序。

重新启动程序不是你可以在事后做的事情,它需要设计到你的应用程序中并进行全面测试。人们不得不担心这个问题的一种方法是使用数据库。这是因为数据库是专业设计和测试的,可以在不丢失数据的情况下重新启动。

答案 1 :(得分:0)

您可以使用标准JDK附带的JConsolevisualvm附加到已经运行的进程并触发堆转储。

然而,正如彼得所说,除非你找到一个可以帮助你的工具,否则阅读这个转储并不会很有趣。