JVM调优的常见命令工具包括:
1. Jps
用于查询正在运行的JVM进程。 直接获取进程的pid
2. Jstat
可以实时显示本地或远程JVM进程中装载,内存,垃圾信息,JIT编译等数据
3. Jinfo
用于查询当前运行着的JVM属性和参数的值
4. Jmap
用于显示当前java堆和永生代的详细信息
5. Jhat
用于分析使用jmap生成的dump文件,是JDK自带的工具
6. Jstack
用于生成当JVM所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是定位线程出现长时间停顿的原因。
JVM常见的调优参数包括:
1. -Xmx
指定java程序的最大堆内存
2. -Xms
指定最小堆内存
3. -Xmn
设置年轻代大小
整个堆大小=年轻代大小+年老代大小。所以增大年轻代后,会减小年老代大小。此值对系统影响较大,Sun官方推荐为整个堆的3/8
4. -Xss
指定线程的最大栈空间,此参数决定了java函数调用的深度,值越大说明调用深度越深,若值太小则容易栈溢出错误(StackOverflowError)
5. -XX: PermSize
指定方法区(永久区)的初始值默认是物理内存的1/64。
在Java8中,永久区被移除,代之的是元数据区,由-XX:MetaspaceSize指定
6.-XX:NewRatio=n
年老代与年轻代的比值,-XX:NewRatio=2,表示年老代和年轻代的比值为2:1
7. -XX:SurvivorRatio=n
Eden区与Survivor区的大小比值,-XX:SurvivorRatio=8表示Eden区与Survivor区的大小比值是8:1:1,因为Survivor区有两个(from,to);
网友评论