2010-12-01 170 views
4

我正在尋找一個你可以鏈接到的DLL,這將使你的.Net應用程序分析能力等同於jconsole。具體來說,就是我想象的是這樣的:jconsole等價於.Net?

  1. 你加一個DLL到項目
  2. 你調用一些init方法
  3. 這暴露一組端點(網絡,TCP,命名管道,等等) 。
  4. 這不會妨礙應用程序的性能,因此您可以在生產環境中運行它。
  5. 當遇到問題時,您連接到端點和配置文件。你可以看到GC根,什麼是佔用內存(保留集),觸發GC,...

是否有這樣的事情?

回答

1

有你看了CLR Profiler for the .NET Framework 2.0

作爲一個.NET的人,或想成爲 - :)我不知道確切地比較與JConsole的,但你可以分析的東西。還有其他商業工具,你可以在「CLR內存分析器」或「.NET分析器」上找到。

2

OP: 確實沒有。

Simon: Jconsole是java和.net之間真正區別的一個側面參數。 Java很容易向用戶呈現哪些.net混淆的信息。也許是因爲他們的思想和目標不同,Java被設計成一個通用的虛擬環境,可以在任何主要的操作系統上運行.net主要是爲Windows設計的。

.net進程不是設計爲在模糊的真空中運行;它們作爲組件服務或iis的一部分運行,並且它們在Windows上運行,所以虛擬環境沒有規定提供遠程監視,因爲您將獲得一定程度的免費wmi。

Java不能這樣工作,因爲java不能對底層操作系統或它提供的信息做任何假設,而且無論對於所有的系統,Java的操作必須同等。因此,Java爲用戶提供了大量關於其內存和線程活動的數據,並提供了一個用於處理和發現用戶代碼(mbeans)中的管理對象的基礎結構。 Jconsole和jvisualvm允許用戶遠程連接到java進程(本地或通過帶有jmx的網絡,儘管jmx需要​​在目標java進程上激活一個標誌),然後他們可以看到所有這些數據並瀏覽所有可用的的MBean。最重要的是,所有這些都是核心功能,程序是免費的。

.Net flat out沒有這個。開發人員從一開始就將遠程管理構建到其應用程序代碼中,並且沒有方便的查看器來幫助用戶發現甚至存在的管理對象。此外,Java代碼可以簡單地反轉回源代碼,重新組合成一個項目,然後用遠程斷點調試生產系統。使用.net可以做到這一點,但他們當然不容易做到。