我们有一个嵌入式系统,它以 lynx OS 作为底层操作系统,我们在其上安装了一个运行 java 程序的虚拟机。现在我需要捕获基本操作系统的进程运行和内存利用率,还需要一个跟踪系统来跟踪虚拟机上运行的多线程应用程序。我需要将捕获的数据发送到远程服务器。请就实现此方案提出一些建议。
问问题
143 次
1 回答
0
关于您问题的 jvm 部分:
每个 java 程序通常会在自己的 jvm 进程上运行,因此您应该独立监控它们。要监视任何 jvm 中的内存使用情况,您基本上需要监视垃圾收集统计信息。为此,您需要在命令行上添加以下命令行参数:
-XX:+PrintGCDetails
这将输出垃圾收集的信息。
-XX:+PrintGCTimeStamps
这将包括垃圾收集输出中的时间戳。
您可能还希望使用以下命令将 gc 输出重定向到文件:
-Xloggc:file
其中 file 是将记录 gc 输出的文件。然后,您可以传输和处理此文件,以提取有关您的程序行为的有用信息。根据该信息,您可以根据内存使用情况调整您的应用程序。
如果您需要在短时间内监视 jvm 进程(即问题调查和解决),那么另一种选择是附加诸如 NetBeans 之类的分析器。这将为您提供比 gc 输出更多的信息,但是此选项只能在短时间内使用,因为分析器会降低 jvm 进程的性能。
现在关于操作系统和系统级别的统计数据,我不是 LynxOS 专家,但是我在 linux 系统中使用了一些流行的工具,例如ganglia和nagios,它们在收集统计数据方面做得很好。但是我不确定它们是否可以在 LynxOS 上使用。
于 2012-09-28T10:09:43.587 回答