请列举常用的 JVM 配置参数,并说明其作用。
考察说明
考查对 JVM 常用配置参数及其用途的理解。
回答思路
- 【回答框架 1】JVM 配置参数主要分为堆内存设置、栈设置、垃圾回收器选择、元空间设置和日志参数等类别。堆内存常用参数包括 -Xms 设置初始堆大小,-Xmx 设置最大堆大小,-XX:MaxMetaspaceSize 限制元空间大小,-Xss 设置线程栈大小。
- 【回答框架 2】垃圾回收相关参数如 -XX:+UseG1GC 选择 G1 回收器,-XX:MaxGCPauseMillis 设置目标停顿时间,-XX:ParallelGCThreads 控制并行线程数。日志参数常用 -Xlog:gc* 记录 GC 日志,-XX:+HeapDumpOnOutOfMemoryError 在 OOM 时生成堆转储。
- 【回答框架 3】实际配置需结合应用特点,堆大小不宜过大或过小,需根据内存资源和吞吐量、延迟目标调整,最终通过压测和监控验证。
- 【关键点 1】-Xms 和 -Xmx 分别设置初始和最大堆内存,通常建议两者相等避免动态伸缩。
- 【关键点 2】-XX:MaxMetaspaceSize 限制元数据区大小,防止内存溢出。
- 【关键点 3】-Xss 设置线程栈大小,过小易栈溢出,过大浪费内存。
- 【关键点 4】-XX:+UseG1GC 选择 G1 垃圾回收器,适合大堆和多核场景。
- 【关键点 5】-Xlog:gc* 和 -XX:+HeapDumpOnOutOfMemoryError 用于观察 GC 行为和故障诊断。
- 【易错点 1】堆最大值设置过大可能超过物理内存导致内存交换。
- 【易错点 2】不同 JDK 版本默认垃圾回收器不同,配置参数需对应版本。
- 【易错点 3】GC 日志参数在新版本中语法可能变化,需查阅相应文档。