第一个问题,JVM性能调优指的是什么?
我认为首要问题是,如何减少gc的时间以及频率。
那么首先做的事gc次数和时间的查看,可以通过如下命令进行查询:
这个概念还是蛮重要的,然后可以通过如下命令来查看堆大小配置。
可以看到新生代和老生代大小的配置。
对于图像化显示可以使用jconsole进行远程图形化访问。
启动项目时命令如下:
nohup /data/javaProject/java-se-8u41-ri/bin/java -Djava.rmi.server.hostname=***** -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=8888 -Dcom.sun.management.jmxremote.password.file=/data/javaProject/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/data/javaProject/jmxremote.access -jar /data/javaProject/sso-1.0-SNAPSHOT.jar --server.port=8080 &
jmxremote.password配置格式如下:
[root@VM-16-7-centos javaProject]# cat /data/javaProject/jmxremote.password
admin 密码
[root@VM-16-7-centos javaProject]# cat /data/javaProject/jmxremote.access
admin readwrite
最后进行远程连接(记得使用tenlet进行端口测试,如果端口不通需要配置防火墙)
可以通过jstack命令来查看线程的状态
一些常见参数:
-XX:ThreadStackSize=<value>:设置线程的栈大小(字节数)(0表示默认) [Sparc: 512, Solaris Intel: 256, Sparc 64bit: 1024 all others 0]
-Xmx256M #设置堆最大大小
-Xms128M #设置堆最小大小
-XX:NewRatio=4 #设置新生代老生代比例
-XX:SurvivorRatio=4 #设置survivor和edion比例
-XX:ConcGCThreads=4 CMS垃圾回收器并行线程线,推荐值为CPU核心数。