2014-10-06 67 views
3

我想在Windows 7上使用Eclipse開普勒64位一起使用Java的VisualVM和我遇到了以下問題:在Eclipse中運行獲取Java程序顯示在VisualVM的

我有內部運行Java應用程序Eclipse的,但是當我打開jVisualVM,唯一的項目上顯示的是應用本地是VisualVM的本身。

是否有可能讓我的Java應用程序也顯示出來?我是否需要使用一些命令行參數啓動它以允許VisualVM連接?我需要在Eclipse之外運行它嗎?

回答

4

由於在Windows JVM的,你需要在同一類的JVM,只要你想連接到(並以相同的用戶)

這意味着該程序運行JVisualVM設計特點,使用32位或64位,而不是每一個。

確保這一點的一個簡單方法是將JVM添加到JDK安裝目錄中,該目錄包含要用於Eclipse已知的JVM(位於Preferences)中的jvisualvm可執行文件,然後將項目使用的JVM更改爲您剛剛添加的JDK中的一個。現在您的應用程序應該在啓動時顯示在VisualVM窗口中。

+0

如何檢查我正在運行的JVM的「種類」?我選擇「jre7」作爲我的程序的執行環境,並從jdk1.7.0_11目錄啓動jvisualvm.exe ... – 2014-10-06 17:54:41

+0

將jdk1.7.0._11目錄添加到JVM的Eclipse知道(在首選項中)並啓動您的程序與此相反。 – 2014-10-06 18:53:25

+0

Got it!我需要添加jdk,選擇它作爲默認值,然後重新啓動Eclipse。那麼它的工作。如果你想擴大你的答案,我想接受它。 :) – 2014-10-06 19:53:20

3

您是否嘗試過使用VisualVM eclipse launcher?這會自動爲您啓動虛擬VM。

唯一的變化是當你在eclipse中運行你的主類時,是改變配置使用VisualVM啓動器。

enter image description here

+0

這是有效的,是的...我只是感到驚訝,它沒有插件沒有工作。有點煩人,我不得不在運行配置中選擇不同的啓動器... – 2014-10-06 18:32:43

+0

是的,它很煩人。我認爲eclipse會記住你的主要類的配置。因此,如果您想稍後重新運行該主要方法*而不使用* visualVM,則必須返回並再次將配置更改回JDT。 – dkatzel 2014-10-06 18:34:51

+0

Thorbjørn想出瞭如何在沒有插件的情況下完成工作。現在我可以像往常一樣在Eclipse中工作,如果我需要分析某些內容,我可以完全獨立於Eclipse運行jVisualVM,並且所有在Eclipse內運行的應用程序都顯示出來,並且可以根據需要對其進行配置...我會接受他因爲就我而言,它是更「優雅」的解決方案。但爲了完整起見,在這裏也很好。有些人可能實際上更喜歡使用插件......絕對是一個非常感謝你,也爲你+1! – 2014-10-07 03:33:25

0

另一種可能的解決方案,在情況下,它可以幫助別人:重新啓動Eclipse。

這是我第一次在新電腦上試用過JVisualVM。 Eclipse在JVisualVM中顯示出來,而不是它啓動的任何子進程。

我正在撕掉我的頭髮,嘗試各種其他的東西(防火牆,不同的JDK ......)然後這個愚蠢的重新啓動只是修復它!


無論如何,如果一切工作正常,規則似乎是:

  • JVisualVM可以連接到和監控使用任何JDK/JRE版本,一樣的「位性」的應用程序。
  • 對於完整的功能(如分析)JVisualVM應在相同或更高版本的JDK比應用

隨機提示運行(而我們討論的位數):

  • 瀏覽內存轉儲無疑是64位的數百萬倍速。 (遺憾的是,我仍然喜歡GUI應用程序的32位-client模式以獲得最低的內存使用量,所以我想以這種方式進行配置,但不幸的是速度太慢了。)
0

就發現,可以防止沒有顯示在JVisualVM Windows下應用程序的另一個,很玄的東西:

JVisualVM使用系統的臨時文件夾(由環境變量TMP指定與溝通)運行應用程序出於安全原因,如果此文件夾不位於Windows可以提供嚴格文件訪問控制的NTFS分區上,則調試將被禁用,並且應用程序將不會顯示在JVisualVM中。

如果重新格式化分區或移動整個臨時文件夾不是您想要的或可以執行的操作,只需在其他位置的NTFS分區上爲JVisualVM創建輔助臨時文件夾,並將您的啓動配置設置爲Eclipse將環境變量TMP設置爲該文件夾。然後,只需使用下面的批處理文件來運行JVisualVM,一切都應該工作:

@Echo off 
set TMP=F:\temp 
start "JVisualVM" /b "C:\Program Files\Java\jdk1.7.0_76\bin\jvisualvm" 

在這裏,你需要用新的臨時文件夾的位置,以取代F:\temp在啓動配置就像指定和C:\Program Files\Java\jdk1.7.0_76你JDK安裝目錄。