参数设置
1.在tomcat中的设置,修改tomcat下/bin/catalina.sh中设置
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
jmap:命令 jmap -heap pid 显示java堆内信息
命令 下载某一时间的快照 jmap -dump:format=b,file=heap.hprof pid
jstat: jvm的检测工具,可以看到一些垃圾回收的信息,类加载,新生代统计信息等
垃圾回收工具:
jconsole用于对java 的内存、线程、类的监控
可以直接在java的安装目录下/bin目录,打开jconsole.exe
visualVM。一样,也是可以在JDK安装目录下/bin的jvisualvm.exe 就行