jvm常见参数
四个重要参数 -Xms、-Xmx、GC算法、-XX:MaxMetaspaceSize
使用环境变量设置
JAVA_TOOL_OPTIONS="-Xms3g -Xmx3g -XX:MaxMetaspaceSize=512m2048m -XX:+UseG1GC"
# -Xms 初始化堆大小
# -Xmx 最大堆大小
# -Xss 每个线程的栈大小(可以不设置)
# -Xms和-Xmx应该设置为一样的值,如果没有设置,默认值为物理内存的1/4
# -XX:+UseG1GC GC算法,小于32G内存
# -XX:+UseZGC GC算法,大于32G内存
在java -jar 命令中设置
java -Xms3g -Xmx3g -XX:MaxMetaspaceSize=2948m2048m -XX:+UseG1GC -jar app.jar
参数参考
计算可分配内存大小:
- 物理内存的75%
- 总的物理内存 减 操作系统需要的(8G),在除以实例数,就是每个实例可以分配的内存
Xms和Xmx应该设置成一样的,避免反复GC,如果没有设置,默认值为物理内存的1/4
-XX:MaxMetaspaceSize , 元数据空间存放的是类的结构信息、方法的字节码、常量池、注解、泛型信息等。意思是动态加载的反射、代理、AOP等都会缓存下来。他的作用是放置加载过多的类把内存用尽了。数值选择是-Xmx的10%。也可以直接使用最大值2G,元数据空间不可能大于2G
GC算法:
-XX:+UseG1GC // ≤32 g 堆
-XX:+UseZGC // >32 g 或低延迟场景