主题
面试速答(先看这里)
**一句话结论:**例如,如果你想设置最大堆大小为 512MB 并启用 G1 垃圾回收器,你可以这样启动你的 Java 应用程序:
60秒标准回答:
JVM的启动参数有很多,但是我们平常能用上的并不是特别多,这里介绍几个我们常用的
要使用这些 JVM 启动参数,你需要在启动 Java 应用程序时在命令行中指定它们
例如,如果你想设置最大堆大小为 512MB 并启用 G1 垃圾回收器,你可以这样启动你的 Java 应用程序
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**JVM的启动参数有很多,但是我们平常能用上的并不是特别多,这里介绍几个我们常用的:
- **要点2:**要使用这些 JVM 启动参数,你需要在启动 Java 应用程序时在命令行中指定它们。
- **要点3:**另外,如果是在IDEA中,需要再run配置中增加上对应的参数,如:
**记忆锚点:**Java → JVM → MaxMetaspaceSize → PrintGCDetails → UseParallelGC → MetaspaceSize
加分表达:
- 例如,如果你想设置最大堆大小为 512MB 并启用 G1 垃圾回收器,你可以这样启动你的 Java 应用程序: 另外,如果是在IDEA中,需要再run配置中增加上对应的参数,如: (图片来源于网络)
追问准备:
- 围绕「Java」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「JVM」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「MaxMetaspaceSize」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
JVM的启动参数有很多,但是我们平常能用上的并不是特别多,这里介绍几个我们常用的:
- 堆设置:
- -Xms:设置堆的初始大小。
- -Xmx:设置堆的最大大小。
- 栈设置:
- -Xss:设置每个线程的栈大小。
- 垃圾回收器设置:
- -XX:+UseG1GC:使用 G1 垃圾回收器。
- -XX:+UseParallelGC:使用并行垃圾回收器。
- 性能调优:
- -XX:PermSize 和 -XX:MaxPermSize:在 Java 8 之前设置永久代的初始大小和最大大小。
- -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize:在 Java 8 及以上版本设置 Metaspace 的初始大小和最大大小。
- -XX:+PrintGCDetails:打印垃圾回收的详细信息。
- 调试和分析:
- -verbose:gc:输出垃圾回收的详细信息。
- -XX:+HeapDumpOnOutOfMemoryError:在内存溢出时生成堆转储。
扩展知识
如何使用
要使用这些 JVM 启动参数,你需要在启动 Java 应用程序时在命令行中指定它们。
例如,如果你想设置最大堆大小为 512MB 并启用 G1 垃圾回收器,你可以这样启动你的 Java 应用程序:
java
java -Xmx512m -XX:+UseG1GC -jar your-application.jar另外,如果是在IDEA中,需要再run配置中增加上对应的参数,如:

(图片来源于网络)