idea多开程序

Sabthever

一. 问题

idea运行的时候,有时需要多开一个程序,其中可能遇到一些问题。比如端口需要不一样,不然有可能冲突;比如某一个程序需要一直保持,不需要随着代码改动重新编译。

二. 解决方法

本文解决的就是这两个问题,都可以通过右上角执行的程序中修改配置来解决。

找到上面靠右的run左边的配置点击,然后在下拉框中选择edit configuration

image-20250604095838798

在左侧选择自己想要的进程,也可以按左上的+-来添加和配置更多进程,达到多开的效果。

image-20250604100009087

然后可以选择Modify options中的vm option,在新出现的文本框中就可以输入程序运行的临时参数。

针对于上述的两个问题,可以由以下两个参数解决:

  1. 禁用devtools的代码修改后立刻编译重启:-Dspring.devtools.restart.enabled=false
  2. 修改该进程端口 -Dserver.port=9093

如果要使用多个参数,只要各个参数之间用空格隔开。
现在用的这两个都是-D开头,这个参数就告诉我们后面跟的相当于application.yml中的参数,优先级是高于application.yml中的。

三. 拓展

除此以外,vm options中还可以有如下的参数。

1. 内存相关参数

  • **-Xms**:设置Java堆的初始大小。
    • 示例:-Xms512m(初始堆大小为512MB)
  • **-Xmx**:设置Java堆的最大大小。
    • 示例:-Xmx2g(最大堆大小为2GB)
  • **-XX:MaxPermSize=**:设置永久代(PermGen)的最大大小(适用于Java 7及以下版本)。
    • 示例:-XX:MaxPermSize=256m
  • **-XX:MaxMetaspaceSize=**:设置元空间(Metaspace)的最大大小(适用于Java 8及以上版本)。
    • 示例:-XX:MaxMetaspaceSize=512m

2. 垃圾回收相关参数

  • **-XX:+UseG1GC**:启用G1垃圾回收器。
  • **-XX:+UseParallelGC**:启用并行垃圾回收器。
  • **-XX:+UseConcMarkSweepGC**:启用并发标记-清除垃圾回收器。
  • **-XX:GCTimeRatio=**:设置垃圾回收时间占总运行时间的比例。
    • 示例:-XX:GCTimeRatio=19(默认值为99,表示垃圾回收时间占总运行时间的1%)

3. 性能优化参数

  • **-XX:+AggressiveOpts**:启用激进的性能优化选项。
  • **-XX:+TieredCompilation**:启用分层编译(默认启用)。
  • **-XX:CompileThreshold=**:设置方法被编译的调用次数阈值。
    • 示例:-XX:CompileThreshold=10000

4. 调试相关参数

  • **-Xdebug**:启用调试模式(已废弃,使用-agentlib:jdwp替代)。
  • **-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=\*:5005**:启用远程调试。
    • 示例:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005(监听5005端口)
  • **-XX:+PrintGCDetails**:打印详细的垃圾回收日志。
  • **-XX:+PrintGCDateStamps**:在垃圾回收日志中打印时间戳。
  • **-XX:+PrintGCTimeStamps**:在垃圾回收日志中打印时间戳。
  • **-XX:LogFile=**:设置垃圾回收日志文件路径。
    • 示例:-XX:LogFile=gc.log

5. 线程相关参数

  • **-Xss**:设置每个线程的栈大小。
    • 示例:-Xss1m(每个线程的栈大小为1MB)
  • **-XX:ParallelGCThreads=**:设置并行垃圾回收器的线程数。
    • 示例:-XX:ParallelGCThreads=4
  • **-XX:ConcGCThreads=**:设置并发垃圾回收器的线程数。
    • 示例:-XX:ConcGCThreads=2

6. 其他常用参数

  • **-D=**:设置系统属性。
    • 示例:-Dserver.port=9093(设置Spring Boot的服务器端口号)
  • **-XX:+HeapDumpOnOutOfMemoryError**:在发生OutOfMemoryError时生成堆转储文件。
  • **-XX:HeapDumpPath=**:设置堆转储文件的路径。
    • 示例:-XX:HeapDumpPath=/var/log/heapdump.hprof
  • **-XX:+DisableExplicitGC**:禁用System.gc()的显式调用。
  • **-XX:+UseStringDeduplication**:启用字符串去重(需要启用G1垃圾回收器)。

  • 标题: idea多开程序
  • 作者: Sabthever
  • 创建于 : 2025-06-03 17:10:34
  • 更新于 : 2025-06-04 10:16:01
  • 链接: https://sabthever.online/2025/06/03/technology/java/idea多开程序/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。