JVM相关参数介绍

110 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

JVM相关参数介绍

前言

我们在使用JAVA虚拟机时,会接触到JVM的参数配置、调优、JVM的监控。在学习Java GC相关知识时也会接触到JVM的相关配置,例如配置参数输出GC日志,用于问题分析解决。今天我们就来了解了解JVM中相关参数配置的含义。

堆内存配置

  1. -Xms:该参数是指定初始堆的大小,默认是物理内存的1/64,单位可以指定g(GB)、m(MB)、k(KB),例如-Xms512m
  2. -Xmx:该参数是指定最大堆大小,默认是物理内存的1/4,,单位可以指定g(GB)、m(MB)、k(KB),例如-Xmx512m,一般设置和-Xms一样。

新生代内存

  1. -XX:NewSize设置新生代(年轻代)最小空间大小,例如-XX:NewSize=256m
  2. -XX:MaxNewSize设置最大新生代(年轻代)最小空间大小,例如-XX:NewSize=1024m
  3. -Xmn:指定新生代(年轻代)的空间大小,例如-Xmn256m,这个参数一般设置较小,会影响性能。

老年代内存

  1. -XX:PermSize 设置永久代(老年代)空间初始大小,例如-XX:PermSize=128m
  2. -XX:MaxPermSize 设置最大永久代(老年代)空间大小,例如-XX:MaxPermSize=128m

在1.8之前设置上面两个参数,用来调节方法区的大小,1.8之后使用的是元空间,1.8之后的JVM架构是将类元数据放到本地内存中,常量池和静态变量放在堆中,HotSpot VM会为类的元数据明确分配和释放本地内存,解决了原来在运行时生成大量类造成经常Full GC问题。

  1. -XX:MetaspaceSize 设置元空间(元数据区)初始大小,例如-XX:MetaspaceSize=21m
  2. -XX:MaxMetaspaceSize 设置最大元空间(元数据区)空间大小,例如-XX:MaxMetaspaceSize=-1,-1是指的没有限制

其他参数

  1. -XX:NewRatio 设置新生代和老年代的壁纸,默认是2,表示新生代和老年代比值是1:2,新生代占整个堆大小的1/3,例如-XX:NewRatio=2
  2. -XX:+PrintGCDetail 打印GC详情,-代表关闭,+代表开启