当前位置: 首页 > 面试题库 >

是-Xdebug的存在,还是仅在单步执行代码时,Java应用程序会变慢吗?

步兴德
2023-03-14
问题内容

我意识到Java代码在调试器中运行时会变慢。

问题是,是否可以通过使用以下选项启动Java来简化代码:

Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n

??

还是仅当您连接到“调试端口”并实际上使用IDE逐步执行代码时才会发生减速?


问题答案:

首先,要严格回答您的问题(至少如其标题所述),-Xdebug仅在5.0之前的JVM中使用JVMDI在 VM中启用调试支持
。因此,它本身并没有太大作用。此外,JVMDI是因为5.0不赞成赞成JVMTI:

- Xdebug的
启动与支持JVMDI启用。JVMDI已被弃用,在J2SE 5.0中不用于调试,因此在J2SE 5.0中调试时不需要此选项。

所以-Xdebug不再做任何事情,重要的部分是:

-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

或者,从Java 5.0开始,较新的版本(您最好在5.0中作为JDWP代理使用该VM的JVM TI接口,而不是较旧的JVMDI接口):

--agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...

现在,据我所知,仅加载jwdp代理和/或配置JVM以侦听给定端口上的套接字连接不会对性能产生任何明显影响。但是连接调试器确实可以。



 类似资料:
  • 运算操作是在Java代码中执行还是在Mysql的where子句中执行 假如age建立了索引,现在要对所有要查询的age进行一个加一操作,那么这个操作是放在Java代码中好还是SQL语句中好 放在SQL语句时的Mybatis代码 本来是觉得直接放在SQL语句中就行,但想着如果在where子句中进行表达式操作会造成索引失效,就在考虑

  • 这是我不想检查的30行Java EE管道方法调用! 在单步执行一个方法时,跳过所有这些的唯一可靠方法是在下一个方法调用中放一个断点,然后点击“单步执行”而不是“单步执行”。然而,与简单的“一步进入”相比,一直这样设置断点是一个主要的麻烦。当我需要走出我正在检查的方法时,我必须重复同样的事情。 我了解Eclipse中的步骤过滤器,并尝试使用这些过滤器,但是一些自动生成的代理类被注入到我自己的包中,所

  • 问题内容: 标题几乎说明了一切……这是一个坏主意吗?我想要XDebug在服务器上提供的增强调试消息。 [编辑]只是为了使事情变得清楚。我知道其中涉及安全风险。也许我应该补充我的问题,并给出为什么要这样做的更确切的原因。 我们的生产服务器还托管一个测试平台。有时,我们使用它来在尽可能接近生产的环境中测试事物。我要寻找的主要东西是使用XDebug的Enhanced 。 这不是用于高流量应用程序的应用程

  • 问题内容: 是否可以以平台无关的方式使用Java应用程序的名称(而不是其位置)在单独的进程中加载​​Java应用程序? 我知道你可以通过…执行程序 …这种方法的主要问题是,此类调用是特定于平台的。 理想情况下,我会将方法包装成像…这样简单的东西。 …并以形式传入应用程序类的完全限定名称。 问题答案: 两个提示: 为你提供了Java可执行文件的路径。 帮助你重构当前应用程序的类路径。 然后你就是(伪

  • 我试图用IntelliJ远程调试liquibase项目的maven插件。问题是IDEA突出显示了错误的源代码行,我不知道为什么。我试图调试的源代码没有被触及。我从我在IntelliJ中使用的源代码中手动构建并安装了本地maven存储库中的插件。我的Intellij版本是,maven版本是,运行在Ubuntu12.04上。 为了调试maven插件,我使用了comand。如果有人对什么是错误有一丁点的