2

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

这些运行时问题在 Java 中是如何定位的?在 C++ 中,我们有 valgrind、Purify 等,但是
1. Java 中有这样的工具吗?
2. 你会建议我们如何输出 println 而不遇到超大文本文件的问题?或者有更好的方法吗?

4

2 回答 2

1

与其打印到 System.out,不如使用 log4j 之类的工具。Log4J 允许调整日志文件大小、版本控制和清除。

http://logging.apache.org/log4j/1.2/

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

于 2013-08-27T06:21:03.447 回答
1

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

有很多可用的 Java 分析器,但也很少有免费的。有一个称为 VisualVM,它随 java 发行版一起提供。您可以使用探查器附加您的进程,但探查器只会帮助您发现一些问题,例如内存泄漏、cpu 密集型任务等

  1. 您如何建议我们输出 println 而不会遇到超大文本文件问题?或者有更好的方法吗?

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

于 2013-08-27T06:21:29.600 回答