运行jvisualVM,找到自己的程序,可以本地也可以监控远程程序。(监控远程时在tomcat下的bin/catalina.sh文件中添加参数 -Dcom.sun.management.jmxremote.port=9999)
JAVA_OPTS="-server -Xms2048m -Xmx16384m -Xss32m -XX:PermSize=512M -XX:MaxPermSize=1024m -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.38.199.150"
切换到Visual GC的tab下面可以查看到各个区域的内存情况,并且在程序运行时,内存会动态变化。可以查看到GC时年轻代Eden,S0,S1是如何回收的,年老代,原空间内存的变化,GC的总时间等一目了然
下面是程序运行时,内存的变化,视频源地址 https://b23.tv/ZJ5CoO
jvisualVM 运行时内存变化