如何检查正在运行的java程序的进度

时间:2013-08-21 10:40:16

标签: java

我开发了一个神经网络程序,它已经运行了一周。我想检查java程序的进度,因为如果程序太接近完成程序就终止程序会很痛苦。有任何概念如这样?

4 个答案:

答案 0 :(得分:4)

嗯,你怎么称呼“进步”?没有一般的“进展”定义。这是你的算法特有的。 您必须为此定义指标。也许这是你正在创建,处理的文件数量等等......可能是迭代次数(如果你知道程序将在固定次数的迭代后结束)。基本上,您必须知道程序何时停止,以及如何评估到此点的距离。

然后,您可以定期打印此指标的值以了解进度。

答案 1 :(得分:1)

以下是一些提示。

你可以使用一些java工具(如jstat)来监视JVM的GC,或使用jstack来查看jvm的Thread。

它不是100%准确,而是一个替代。

答案 2 :(得分:1)

如果您的应用程序没有内置进度报告,则无法完成。您可以使用thread dump来检查它实际上在做什么。

答案 3 :(得分:0)

哦,哦!一周学习....你肯定可以在下次打印一些状态(每小时一次?)。如果按进度你的意思是学习过程我会在一段时间内进行网络输出测试验证。我将展示当前输出与所需输出的不同之处。这将是你的错误。通常这个误差较小,并且随着学习而变小(如果网络没有进入某种奇怪的振荡)。这将是你的学习曲线。如果从一个时期到另一个时期没有出现大的错误变化(增量),我会停止学习。

只是一点点。您可以检查VisualVM工具(http://visualvm.java.net/)。它基本上连接到您的应用程序,您可以看到几个信息。这更像是分析器,但至少你可以看到你当前运行的应用程序是否存活。