2009-07-29 48 views
1

我在JRE 1.4.2_12上運行的Java應用程序支持每天晚上在午夜附近掛起。我想盡可能多地記錄分析信息,以便發現JVM中或應用程序外部是否存在問題。如何收集Java 1.4應用程序的分析信息?

我想使用HPROF來收集儘可能多的信息。

  1. 有沒有辦法讓HPROF每分鐘轉儲一次cpu樣本和內存分配報告,而不是在JVM的終止處?
  2. 是否有不同的,更合適的分析器可以收集這樣的信息?

回答

1

而不是依靠轉儲文件,我會嘗試將探查器連接到虛擬機,並將其掛起直到掛起發生。然後使用分析器來反思線程的狀態。

由於1.4的調試界面並不好,所以使用Java 1.4是一個小問題,但一些分析器仍然支持它。我可以特別推薦YourKit,這是商業的,但提供評估許可證。這是我使用過的最好的分析器,但有一定的餘量。

+0

你的意思是調試器? – 2009-07-29 19:50:35

+0

YourKit是一個美妙的分析器 - 我們已經使用它來取得巨大成功。你也可以嘗試使用Eclipse進行遠程調試會話,如果你能弄清楚如何重現錯誤(例如將服務器的時間設置爲午夜?) – aperkins 2009-07-29 20:00:04

+0

@Thorbjørn:調試器,分析器,馬鈴薯,番茄....有一些在這裏重疊。即使它不告訴你哪個代碼正在執行,分析器也會給出更多關於線程狀態的數據。 – skaffman 2009-07-29 20:16:43

0

我會首先嚐試確定它是否實際上是您的應用或其他東西。

盒子上是否有其他應用程序,如果是的話,他們是否會在午夜左右運行任何批次。這可能是您的應用程序由於其他東西在盒子上運行或咀嚼帶寬而導致缺乏資源的情況。

這是始終如此,最近是否開始。如果這是新的看看盒子上的變化,而不僅僅是你自己的應用程序。

1

第一件事第一件事:當你的應用程序掛起時,你分析了線程轉儲嗎?很多時候,有足夠的信息來解決一個掛斷的Java應用程序...

Ctrl-Break在Windows上的進程窗口,或在Linux上kill -QUIT [pid]

相關問題