在正在运行的Java应用程序中找到问题的更好方法?

时间:2013-08-27 06:12:36

标签: java debugging runtime

我们在localhost上运行了一些作为后端服务器应用程序运行的java应用程序(jars)。这些程序位于虚拟框内(RHEL 6.2) 在其中一个罐子运行了5天后,它停止工作。没有抛出异常(没有看到可以在catch块中捕获的错误的任何输出)。为了找出导致这种情况的原因,我们使用shellcript在命令行上使用println's运算符将一些>和重定向输出放入文本文件中。
大约4或5天后,我们遇到了一种情况,我们可以看到jar仍在运行,但它没有向文本文件或应用程序应该写入条目的数据库输出任何内容。
也许文本文件变得太大而虚拟框无法处理,但基本上我们想知道这个:

Java中存在这样的运行时问题?在C ++中我们有valgrind,Purify等,但是 的 1。 Java中有这样的工具吗? 2.您如何建议我们在不面对极大文本文件问题的情况下输出println?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

而不是打印到System.out如何使用像log4j这样的工具。 Log4J允许进行日志文件大小调整,版本控制和清除。

请参阅http://logging.apache.org/log4j/1.2/

您可能还想重新考虑您的服务器架构。

答案 1 :(得分:1)

  

Java中存在这样的运行时问题?在C ++中我们有   valgrind,Purify等,但是1.在Java中有这样的工具吗?

有很多可用的java分析器,很少有免费的。有一个叫做VisualVM,它带有java发行版。您可以使用分析器附加您的过程,但分析器只会帮助您找到一些问题,例如内存泄漏,cpu强化任务等。

  
      
  1. 您如何建议我们在不面对极大文本文件问题的情况下输出println?或者有更好的方法吗?
  2.   

Sysout不是处理这个问题的好方法。 log4j等记录器提供了非常易于使用的API。 Log4j还提供了简单的方法来配置以滚动日志文件等功能