参数设置

1.在tomcat中的设置,修改tomcat下/bin/catalina.sh中设置

JVM学习记录五(JVM调优)_垃圾回收器

2.在jar启动时命令设置

nohup java -Xms512m -Xmx1024m -jar -demo.jar &

参数调优

设置堆空间大小:一般默认大小设置为物理内存的1/64,最大大小设置为    1/4,具体情况还是要根据当前主机的的实际使用情况, 是不是还有其他应用程序,避免太小导致GC太频繁,stw也会频繁,太大导致fullgc的时候stw的时间太长

虚拟机栈设置:虚拟机栈适用于程序运行时为每个线程分配空间,默认是1M,一般是256K就行,减少线程的堆栈可以产生更多的现成,不过不能太小, 要不会出现栈内存溢出

参数: -Xss 256k

年轻代eden区和两个survivor区大小设置 :这个一般不做调整,默认比例是8:1:1,调整比例大小影响的是ygc的频率

参数: -XXSurvivorRatio=8 表示 survivor:eden=2:8

年轻代晋升老年代的阈值:默认值为15,可以调整小一些,最大不超过15

设置垃圾回收器:

之前说过JDK8 的默认垃圾回收器是并行垃圾回收器,采用复制算法与标记-整理算法,JDK9及以后使用的是G1回收器,采用的是复制算法

参数: -XX:+UseG1GC

调优工具:

命令:

jstack:查看线程内的进程信息 命令:jstack pid

JVM学习记录五(JVM调优)_垃圾回收器_02

      jmap命令 jmap -heap pid 显示java堆内信息

JVM学习记录五(JVM调优)_jvm_03

   命令 下载某一时间的快照  jmap  -dump:format=b,file=heap.hprof pid

jstat: jvm的检测工具,可以看到一些垃圾回收的信息,类加载,新生代统计信息等

JVM学习记录五(JVM调优)_垃圾回收器_04

垃圾回收工具:

jconsole用于对java 的内存、线程、类的监控

可以直接在java的安装目录下/bin目录,打开jconsole.exe  

JVM学习记录五(JVM调优)_垃圾回收器_05

visualVM。一样,也是可以在JDK安装目录下/bin的jvisualvm.exe 就行

JVM学习记录五(JVM调优)_jvm_06