2010-12-01 88 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可以做到这一点,但他们当然不容易做到。