关于jvm性能调优重要命令行
关于jvm性能调优重要命令行
jvm
以下都是基于JDK1.8
//查看当前系统jvm的线程栈内存大小
java -XX:+PrintFlagsFinal -version | grep ThreadStackSize
//查看docker实例的内存与cpu情况
docker stats
//查看宿主机内存情况(由于docker是和宿主机共享物理内存和cpu资源的,所以在宿主机上查看和在docker主机内查看是一样的)
cat /proc/meminfo
在docker实例里查看:

在宿主机里查看:

在堆内存不变的情况下,线程栈内存越小,可创建的线程数越多,栈内存越大,可创建的线程数越少。
//查看某服务进程
ps aux|grep ‘bzy-auth’
//使用jmap命令查看当前jvm堆内存配置和使用情况(在docker里的java进程是1)
jmap -heap 1

//查看当前jvm线程数统计
jstack 1 |grep ‘tid’|wc –l (linux 64位系统中jvm线程默认栈大小为1MB)

//设置jvm最大堆内存大小
java –Xmx1024m -jar xx.jar
影响线程数量的因素有下面几个:
| -Xms | intial java heap size |
|---|---|
| -Xmx | maximum java heap size,代表老年代 |
| -Xss | the stack size for each thread |
| 系统限制 | 系统最大可开线程数 |

//影响java堆内存性能
-xmn 代表的是年轻态,超过这个就会后面被gc移动到老年代中,执行垃圾次回收
//查看进程相关信息占用的内存情况
pmap -x 1
//按顺序查看进程各指标
ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid’ | grep java | sort -nrk5
//查出pid指标
top -p [pid]
//查看应用程序pid
ps -aux|grep bzy-auth
//查看某用户进程id
top -u root
//直接使用命令查看一下当前 JVM 默认参数
java -XX:+PrintCommandLineFlags -version

