2012-12-06 44 views
14

我試圖運行JConsole的來分析正在運行的進程使用的內存,但JConsole中不顯示即使我絕對相信,一個正在運行(除了它應該告訴我處理JConsole也在進程列表中,但它沒有)。JConsole中找不到過程

有沒有人有一個想法,爲什麼它不顯示任何進程?

乾杯

回答

10

我有同樣的問題。但是如果我明確指定PID,如jconsole 1234,jconsole能夠分析過程。

+1

你能提供你如何做到這一點的詳細信息? –

15

在窗口提示符下運行回聲%TMP%,它會給你默認的臨時目錄。轉到該目錄並查找名爲hsperfdata_的目錄,其中是您的登錄名。這是存儲你的進程ID的目錄。您創建的任何新進程(例如Java應用程序)都將有一個由進程ID命名的新文件。 Jconsole將從這個目錄中獲取進程id。如果您無法在此目錄中創建文件,那意味着您需要更改權限才能進行寫入。完成之後,啓動一個新的Java應用程序以查看是否在目錄中有新的進程ID文件。一旦確認,啓動jconsole

+1

如果java進程從cygwin啓動,它將有一個不同於預期的TEMP文件夾 - jconsole,從explorer啓動時不會再找到該進程。 – Kai

+0

謝謝詹姆斯!修復權限爲我工作! :) – baraka

1

當受監控的JVM和監控工具(JConsole/JMC/Java Mission Control,甚至是VisualVM)的%TMP%值不同時,會發生這種情況。 這可能是標準方案使用Cygwin(至少在我的情況:Cygwin的+ Babun) 最簡單的解決方案是設置TMP環境變量Windows使用,在殼啓動JVM的範圍至少爲默認值的值。

2

在我的情況下,去除hsperfdata_USERNAME目錄(%TMP%目錄),並關閉所有的JVM提供了幫助。

0

你必須開始JConsole的使用相同的用戶,你要分析是由啓動過程中。

+0

即使我從同一用戶運行,但我仍然無法運行jconsole。 –

0

如果你在Windows上運行JConsole的 - 簡單地說:

  1. 查找jconsole.exe
  2. 右鍵單擊它
  3. 選擇以管理員身份運行