【问题标题】:Intellij IDEA creates multiple process for each debug session?Intellij IDEA 为每个调试会话创建多个进程?
【发布时间】:2016-03-20 20:11:11
【问题描述】:

每次我在 IDE 中点击调试按钮时,都会创建一个在操作系统上运行的新进程。

有没有办法进行配置,以便在点击调试按钮时一次只能在我的操作系统上运行一个 JAVA 进程?

我所知道的是,如果我点击调试面板中的红色停止按钮,该数字会减少。只要我记得每次在点击调试按钮之前停下来,我就可以管理正在运行的进程数。但这很容易忘记做。此外,一旦我有 5-10 个正在运行的调试会话,将它们全部删除是非常乏味的。我必须去Run->Show Running List,然后出现“VM Connections”列表,我必须将它们一一删除。通常,列出它们的这个 UI 组件会简单地消失,我必须再次将其拉出。有没有办法一次性结束所有这些过程?

【问题讨论】:

    标签: java debugging intellij-idea


    【解决方案1】:

    来自IntelliJ IDEA 2016.1 Help /Run/Debug Configuration

    "IntelliJ IDEA 2016.1 帮助/运行/调试配置:远程

    常用选项

    仅限单个实例
    如果选中此复选框,则不能多次启动此运行/调试配置。 每次启动新的运行/调试配置时,IntelliJ IDEA 都会检查相同运行/调试配置的其他实例是否存在,并显示一个确认对话框。如果在确认对话框中单击“确定”,则运行器的第一个实例将停止,而下一个实例将取而代之。 当某些资源的使用可能导致冲突时,或者当启动相同类型的两个运行/调试配置消耗过多的 CPU 和内存资源时,这是有意义的。 如果未选中此复选框,则可以根据需要启动尽可能多的运行器实例。这样一来,每个运行器都将在运行工具窗口的自己的选项卡中启动。”

    【讨论】:

      【解决方案2】:

      你不能在整个操作系统范围内进行 AFAIK,而且你不希望它是那样的;有多少 other Java 进程可能正在运行但与您的调试会话无关? (Intellij 就是其中之一)

      您可以做的是,在您的运行配置设置中,将您的一项或多项配置设置为“仅限单实例”;它是对话框右上角的一个复选框。这将迫使您在开始另一个配置之前终止使用该配置运行的任何运行。

      【讨论】:

      • 谢谢。这正是我正在寻找的。关于操作系统,我只提到这一点是因为我在活动监视器中注意到我有近 10 个 Java 进程正在运行,这些进程无疑是不间断的调试会话。
      【解决方案3】:

      IntelliJ 创意 2017

      标记此复选框:

      Run -> Edit configurations -> Single instance only(右上角)

      它不会让您在运行下一个实例之前运行另一个实例。

      【讨论】:

      • Single instance only 因某种原因无法为我工作,即使我启用了它
      • @UmerFarooq 这只有在你运行相同的配置时才有效
      • 我正在运行相同的配置,但出于某种奇怪的原因,每次我点击播放按钮时它都会创建新实例
      【解决方案4】:

      Intellij IDEA 更新

      对于那些想知道一旦执行编译/调试/运行并且只有一个实例正在运行时,每次出现第二个 java 进程(大约 100 MB 内存分配)的人:该进程是并行运行的编译服务器到主 IDEA 并接管编译。原因是内存占用和性能较低。

      The feature exists since 2012, but was not enabled by default.

      【讨论】:

        【解决方案5】:

        我们公司的所有人都有IntelliJ Idea,在2019.2.3 版本之后我们都遇到了这个问题。解决方案出乎意料。如下图所示,有一个名为On frame deactivation的项目,默认值为Update classes and resources

        在这种情况下,当我们在 debug mode 上并且我们正在更改一个简单的事情并且我们正在更改当前窗口(例如将 chrome 放在前面以测试更改)时,它正在创建每个 deactivation on idea frame两个进程(一个用于building,一个用于hot swap),因此您可以想象可以结束多少个进程。我个人有过 12 个进程!

        答案是将此值更改为Do nothing。所以每次换课时,我都会按debug frame中的white button手动,它只会刷新一次资源。

        我们尝试更改堆大小或其他解决方案,但它们对我们无效。

        【讨论】:

          猜你喜欢
          • 2020-04-05
          • 1970-01-01
          • 1970-01-01
          • 2018-11-05
          • 2012-07-23
          • 2021-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多