【问题标题】:jconsole equivalent for .Net?.Net 的 jconsole 等效项?
【发布时间】:2011-05-18 12:59:51
【问题描述】:
我正在寻找一个您可以链接到的 DLL,它将为您的 .Net 应用程序提供与 jconsole 相当的分析能力。具体来说,我想象的是这样的:
- 您将 DLL 添加到您的项目中
- 你调用了一些初始化方法
- 这会公开一组端点(Web、TCP、命名管道等)。
- 这不会影响您的应用程序的性能,因此您可以在生产环境中使用它。
- 遇到麻烦时,您可以连接到端点并配置文件。您可以查看 GC 根、占用内存的内容(保留集)、触发 GC、...
有这样的吗?
【问题讨论】:
标签:
.net
memory
profiling
jconsole
【解决方案1】:
操作:
真的没有。
西蒙:
Jconsole 是 java 和 .net 之间真正区别的一个侧面论据。 Java 很容易将 .net 混淆的信息呈现给用户。也许是因为它们不同的意识形态和目标,java 被设计成一个通用的虚拟环境,可以在任何主机操作系统上运行,其中 .net 主要设计为考虑 windows。
.Net 进程并非设计为在模棱两可的真空中运行;它们作为组件服务或 iis 的一部分运行,并且它们在 Windows 上运行,因此虚拟环境不提供远程监控,因为您可以从 wmi 获得一定程度的免费。
Java 不是这样工作的,因为 java 不能对底层操作系统或它将提供什么信息做出任何假设,而且无论 java 做什么,都必须对所有系统平等地完成。因此,java 向用户提供了大量有关其内存和线程活动的数据,并提供了用于处理和发现用户代码 (mbean) 中的托管对象的基础设施。 Jconsole 和 jvisualvm 允许用户远程连接到 java 进程(本地或通过网络使用 jmx,尽管 jmx 需要一个标志在目标 java 进程上处于活动状态),然后他们可以看到所有这些数据并浏览所有可用的豆豆。最重要的是,所有这些都是核心功能,并且程序是免费的。
.Net flat out 没有这些。开发人员从一开始就将远程管理构建到他们的应用程序代码中,并且没有一个方便的查看器可以帮助用户发现甚至存在哪些管理对象。
此外,Java 代码可以轻松地返回源代码,重新构成项目,然后针对生产系统使用远程断点进行调试。 .net 可以做到这一点,但它们肯定不容易做到。