【问题标题】:Running JProfiler for grails on IntelliJ在 IntelliJ 上为 grails 运行 JProfiler
【发布时间】:2017-03-27 13:40:58
【问题描述】:

我正在尝试为 grails 应用程序运行 JProfiler。我非常感谢您提供以下任何建议: 1) 由于我在 grails 应用程序中没有带有 main() 方法的显式类,因此我假设附加到正在运行的 JVM 是我唯一的选择。真的吗?有没有办法在 grails 应用程序启动之前附加 JProfiler? 2) 附加到正在运行的 JVM 后,JProfiler 需要什么来分析控制器/服务/src/域文件。我是否必须执行测试用例。在我的情况下,它们是休息控制器,所以我必须为所有可能的场景运行请求吗? 3) 是否可以让 Jprofiler 分析代码而无需我运行测试用例,因为我可能无法涵盖所有​​场景?

【问题讨论】:

    标签: performance jprofiler


    【解决方案1】:

    因为我在 grails 应用程序中没有带有 main() 方法的显式类

    JVM 分析器不依赖于您自己编写的 main 方法。您唯一需要做的就是将-agentpath VM 参数传递给JVM。确切的参数由 JProfiler 中的 Session->Integration wizard->New Remote Integration 给出,对于 Grails >= 3.1.5,必须将其添加到环境变量 GRAILS_FORK_OPTS

    Intellij IDEA 集成可以直接分析 Grails 运行配置,因此您不必执行上述操作。

    也可以使用附加 API,但连接时开销较高,并且会阻止启用某些分析功能。

    我是否必须针对所有可能的场景运行请求

    分析器对整个 JVM 进行剖析,因此您在分析时运行的任何用例都会显示在分析器中。

    【讨论】:

    • 非常感谢您的回复 Ingo。 “Intellij IDEA 集成可以直接分析 Grails 运行配置,因此您不必执行上述操作。” 我怎样才能做到这一点,以便我可以分析应用程序启动?
    • 在IDEA中安装JProfiler插件选择grails运行配置,点击工具栏中的profile按钮。在 JProfiler 的会话启动对话框中,选择包含 CPU 分析的记录配置文件。然后它会分析应用服务器的整个启动过程。
    • 单击工具栏中的配置文件按钮时出现以下错误:加载程序约束冲突:解析方法时“kotlin.reflect.KClasses.getMemberProperties(Lkotlin/reflect/KClass;)Ljava/实用程序/集合;"当前类 com/jprofiler/integrations/idea/runner/f 的类加载器(com/intellij/ide/plugins/cl/PluginClassLoader 的实例)和类加载器(com/intellij/util/lang/ 的实例) UrlClassLoader) 用于方法的定义类,kotlin/reflect/KClasses,对于签名中使用的类型 kotlin/reflect/KClass 有不同的 Class 对象
    • 由于 cmets 的字符限制,我将在答案部分发布完整的堆栈跟踪
    • 在 stackoverflow 中,您不应发布包含更多信息的答案或在同一问题中切换到不同的问题,我建议您删除您的答案。由于我必须为您提供新版本,请将堆栈跟踪连同您正在使用的 IDEA 版本号一起发送至 support@ej-technologies.com。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多