1. 程式人生 > >JDK7下VisualVm插件無法鏈接到插件中心

JDK7下VisualVm插件無法鏈接到插件中心

過程 alt 分別是 連不上 div OS 可能 cpu lock

??VisualVM 是一款免費的,集成了多個 JDK 命令行工具的可視化工具,它能為您提供強大的分析能力,對 Java 應用程序做性能分析和調優。這些功能包括生成和分析海量數據、跟蹤內存泄漏、監控垃圾回收器、執行內存和 CPU 分析,同時它還支持在 MBeans 上進行瀏覽和操作。不比哪些收費的監控軟件遜色多少。

??VisualVM更棒的地方是在於它能通過安裝插件來擴展功能。

看了上面的介紹,我忍不住心動了嘗試了一下VisualVM 來分析一下JVM。既然有插件擴展更多的功能,那肯定要嘗試一下,然而成功的道路總是充滿曲折的。

安裝插件過程中的遇到以下兩個問題:

1. VisualVm 默認的插件中心的網址連不上去

這是因為Java VisualVM默認的插件中心網址已關閉服務,插件中心的服務器已經移交到github上,地址是https://visualvm.github.io/pluginscenters.html;
然後,在根據不同的JDK版本選擇不同的插件地址。更改VisualVM插件中心的地址。

2. JDK1.7任然無法鏈接插件中心

我的電腦上安裝了兩個JDK,分別是JDK1.8和JDK1.7,再更改了正確的插件中心地址後,JDK1.8的VisualVM可以正常安裝插件,然而JDK1.7卻還是不行,鏈接時報了以下錯誤:

技術分享圖片

這就有點奇怪了。

在折騰了多次後,終於看到網上的一個說法:

JDK1.7默認支持TSL1.0,而JDK1.8默認支持TSL1.2

我們發現插件中心的網址正是https開頭的,那我們對這個網址用Wireshark抓一下包

技術分享圖片

果然,插件中心的服務器上使用的正是TSL1.2的版本。那麽解決方案有兩種:

  1. 更改VisualVM的支持的TSL版本號,改成V1.2版本。

但好像找不到對應的設置。但可以使用系統屬性來設置,看下面的代碼。還有,在項目開發中也可能會遇到這個問題,那麽同樣也可以使用以下代碼來指定JDK1.7的TSL版本號:System.setProperty("https.protocols", "TLSv1.2");

  1. 退回到http協議,用這種方法來解決此問題有點麻煩。經過一翻努力,發現所有插件的地址是由XML文件保持的,你還必須修改XML裏面的每個插件下載地址成http,這意味著你必須那個下載XML文件,離線維護一個版本庫,無法在線更新。但這也算一種解決方案,記錄一下吧。

技術分享圖片

JDK7下VisualVm插件無法鏈接到插件中心