设置 JVM 参数在平时的开发和使用中是经常会遇到的,这里以 IDEA 设置教程为主,并不会深入探讨 JVM 。如果你想完整的了解 JVM,《深入理解 Java 虚拟机》一书中进行了很好的讲解。

JVM 参数简介

Java 虚拟机中,一般将参数分为三类:

  • 标准参数-:所有的 JVM 实现都必须实现的参数功能并且向后兼容,如-version、-jar
  • 非标准参数-X:默认 JVM 实现的参数功能,并不保证所有 JVM 实现都满足且不保证向后兼容。
  • 不稳定参数-XX:各个 JVM 实现可能有所不同,将来可能随时取消,慎重使用。

非标准参数示例

  • -Xms512m:设置 JVM 初始堆内存为512M。此值可以与-Xmx同时设置相同内存以避免每次垃圾回收完后 JVM 重新分配内存大小。
  • -Xmx512m:设置 JVM 最大堆内存为512M。
  • -Xss256K:设置每个线程的堆栈大小。JDK5.0 以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成。
  • -Xmn200m:设置年轻代大小为200M。堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

不稳定参数示例

  • -XX:+HeapDumpOutOfMemoryError:当首次遭遇OOM时导出堆快照。
  • -XX:HeapDumpPath=/home/tmp:设置堆快照保存地址。
  • -XX:ParallelGCThreads=3:设置并行的线程数量。
  • -XX:-UseParallelGC:启用并行GC。

配置 JVM 参数

打开项目主启动类的编辑窗口:

展开Environment选项:


VM options进行配置。

验证:如图我配置了内存大小为 2G,在资源监视器中已经稳定占用。

配置多实例启动

在上图编辑窗口,右上角可看到此选项,默认未勾选。如果你想启动多个项目,可开启此选项,并同时更改项目所用端口号,即可启动多个不同端口的项目实例。


参考