如何查看 JVM(?)内部。我可以在工作应用程序中分析方法、参数、返回值等吗?

Posted

技术标签:

【中文标题】如何查看 JVM(?)内部。我可以在工作应用程序中分析方法、参数、返回值等吗?【英文标题】:How to look inside JVM(?). Can I profile methods, arguments, return values etc in working application? 【发布时间】:2014-02-22 23:38:09 【问题描述】:

首先对一个小问题表示抱歉。我想请教 JVM 专业人士。

假设您有一个正在运行的 java 应用程序。是否有一些 JVM API (JVM TI) 可以为我提供有关现在正在调用哪些方法、它们得到什么参数以及它们返回什么值的信息。 If yes, why there are no such testing java tools, that can rely on this information and produce jUnit tests?

【问题讨论】:

【参考方案1】:

“调试”环境的最佳选择是下载 Eclipse 集成开发环境 (IDE)。该环境有一个完整的调试环境,可让您逐步完成您的程序(以及更多)。

转到https://www.eclipse.org/downloads/ 并下载与您的操作系统匹配的那个。

eclipse 中还有许多其他可用的东西......它将为您提供很长时间的服务。

【讨论】:

【参考方案2】:

我不太确定您实际上在做什么,但只是为了大致了解 JVM 当前正在做什么,请查看 JDK 中包含的“jvisualvm”应用程序。如果 JAVA_HOME/bin 在您的 PATH 中,只需在命令行中输入“jvisualvm”即可。您将能够看到当前在您的机器上运行的 Java 应用程序,选择一个,然后查看它在内存使用、方法调用和性能方面的表现。 如果您需要更多信息,请使用与您的 IDE 集成的调试器。 JUnit 测试是完全不同的东西。单元测试应该根据合同测试您的代码,它们不需要查看您的程序在做什么。我建议您在尝试使用任何高级工具之前先阅读一些有关单元测试的理论信息。

【讨论】:

以上是关于如何查看 JVM(?)内部。我可以在工作应用程序中分析方法、参数、返回值等吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看 OkHttp 客户端的完整内部工作?改造插座关闭超时

企业内部应用如何开发?

针对程序员/开发人员的JVM内部的规范参考[关闭]

java NIO内部如何工作,内部使用线程池吗?

我应该如何诊断和防止 JVM 崩溃?

JVM中如何存储对象和类