2012-09-28 66 views
0

我們有一個嵌入式系統,它具有lynx OS作爲底層操作系統,我們在其上安裝了運行Java程序的虛擬機。現在我需要捕獲基本操作系統的進程運行和內存利用率以及跟蹤系統跟蹤虛擬機上運行的多線程應用程序。我需要將捕獲的數據發送到遠程服務器。請提供一些關於實現這種情況的建議。從遠程服務器捕獲數據的機制

回答

0

關於你的問題的JVM部分:

每一個Java程序通常會在其自己的JVM進程中運行,因此,應該獨立地監控他們。要監視任何jvm中的內存使用情況,您基本上需要監視垃圾回收統計信息。要達到此目的,您需要在命令行上添加以下命令行參數:

-XX:+PrintGCDetails 

這將輸出垃圾回收的信息。

-XX:+PrintGCTimeStamps 

這將在垃圾回收輸出中包含時間戳。

您還可能要到GC輸出重定向到使用文件:

-Xloggc:file 

如果文件是GC輸出將被記錄的文件。然後,您可以傳輸並處理該文件,以便提取有關您程序行爲的有用信息。根據這些信息,您可以調整您的應用程序的內存使用情況。

如果你需要監視JVM進程的時間週期(即對問題的調查和解決),那麼另一個選擇是安裝一個分析器,如NetBeans的。這將爲您提供比gc輸出更多的信息,但是此選項只能在短時間內使用,因爲配置文件會降低jvm進程的性能。

現在關於操作系統和系統級的統計,i'n不是LynxOS的專家,但是我已經使用了幾個流行的工具如Nagios的在Linux系統這在收集統計數據做了出色的工作。但我不確定他們是否可以在LynxOS上使用。

+0

謝謝lefty !.您能否介紹一下如何將數據傳輸到遠程服務器?我是否必須使用RMI還是有其他機制? –

+0

您需要做的是將gc輸出日誌傳輸到某個遠程位置。這裏有一些選擇:您可以編寫一個shell腳本以某種方式(即通過ftp)按計劃的時間間隔傳輸文件,或者您可以將gc輸出文件放置在可以遠程訪問的目錄中(如果可能)。 –

+0

「要實現這一點,您需要在命令行中添加以下命令行參數: -XX:+ PrintGCDetails」 但是我正在尋找一個java應用程序或日誌框架來做到這一點?這是可能的,因爲我不知道如何通過命令提示符將命令放置到底層操作系統。我們可能無法打開命令提示符,因爲所有東西都打包在嵌入式系統中。需要你的建議。 –

相關問題