java调优
JDK监控和故障处理指令
jps
JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。
jstat
JVM statistics Monitoring监控虚拟机运行时状态信息
C:\>jps -l -m
5216
12268 org.jetbrains.idea.maven.server.RemoteMavenServer36
15516 sun.tools.jps.Jps -l -m
C:\>jstat -class 12268
Loaded Bytes Unloaded Bytes Time
4126 7519.7 0 0.0 1.06
C:\>jstat -gc 12268
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
0.0 3072.0 0.0 3072.0 161792.0 18432.0 97280.0 3287.2 21504.0 20606.9 2560.0 2296.7 4 0.022 0 0.000 0.022
jmap
JVM Memory Map用于生产heap dump文件,或者-XX:+HeapDumpOnOutOfMemoryError
参数让虚拟机出现OOM时自动生成dump文件。
jhat
JVM Heap Analysis Tool,与jmap搭配使用
jstack
生成虚拟机当前时刻的线程快照。
线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。
jinfo
JVM Configuration info实时查看和调整虚拟机运行参数
C:\>jinfo -flag MaxMetaspaceSize 12268
-XX:MaxMetaspaceSize=18446744073709486080
GC IDEA调优实战
原来:
-Xmx2040m
-Xms128m
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-ea
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-Dfile.encoding=UTF-8
调整内存控制垃圾回收频率:
-Xmx1024m
-Xms1024m
尝试cms,竟然更快了。
-Xmx1024m
-Xms1024m
-XX:ReservedCodeCacheSize=512m
-XX:+UseConcMarkSweepGC
类加载时间优化:
idea启动加载两万多个类,因为idea是常用的开发工具,经常很多人的使用,我们可以认为它的代码是安全的,是否符合当前虚拟机的要求,不会危害虚拟机的安全,所以我们使用参数-Xverify:none
来禁用字节码的验证过程
继续:链接