JVM调优的常见命令行

1)jps命令用于查询正在运行的JVM进程

JVM调优的常见命令行_第1张图片

2)jstat可以实时显示本地或远程JVM进程中类装载、内存、垃圾收集、JIT编译等数据

/home/tools/jdk1.8.0_181/bin/jstat -gcutil 30386(java进程号) 2000

  JVM调优的常见命令行_第2张图片

3)jinfo用于查询当前运行这的JVM属性和参数的值
[java@xftest0 ~]$ jinfo 43934
Attaching to process ID 43934, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.45-b01
Java System Properties:
 
java.runtime.name = Java(TM) SE Runtime Environment
sun.boot.library.path = /usr/java/jdk1.6.0_45/jre/lib/amd64
java.vm.version = 20.45-b01
java.vm.vendor = Sun Microsystems Inc.
java.vendor.url = http://java.sun.com/
path.separator = :
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg = sun.io
sun.java.launcher = SUN_STANDARD
env = dev
user.country = US
sun.os.patch.level = unknown

4)jmap用于显示当前Java堆和永久代的详细信息

命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件,生成dump的命令为:jmap -dump:live,format=b,file=文文件名(hprof后缀)  也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。

5)jstack用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是定位线程出现长时间停顿的原因。

6)top命令 通过top -Hp 23344可以查看该进程下各个线程的cpu使用情况;具体实操经验见:https://www.cnblogs.com/wuchanming/p/7766994.html

7)pidstat实时查看一个进程的CPU使用情况及上下文切换情况

8)vmstat查看总体的CPU使用情况 

      sudo vmstat 2 3

        參数2表示每一个2秒显示一下结果,3表示显示结果的数目。

       cs列表示每秒上下文切换次数,us表示用户CPU时间。

JVM调优的常见命令行_第3张图片

9) jmap  -heap 29544 查看某一实例jvm配置

JVM调优的常见命令行_第4张图片

二、JVM常见的调优参数包括

-Xmx

  指定java程序的最大堆内存, 使用java -Xmx5000M -version判断当前系统能分配的最大堆内存

-Xms

  指定最小堆内存, 通常设置成跟最大堆内存一样,减少GC

-Xmn

  设置年轻代大小。整个堆大小=年轻代大小 + 年老代大小。所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss

  指定线程的最大栈空间, 此参数决定了java函数调用的深度, 值越大调用深度越深, 若值太小则容易出栈溢出错误(StackOverflowError)

-XX:PermSize

  指定方法区(永久区)的初始值,默认是物理内存的1/64, 在Java8永久区移除, 代之的是元数据区, 由-XX:MetaspaceSize指定

-XX:MaxPermSize

  指定方法区的最大值, 默认是物理内存的1/4, 在java8中由-XX:MaxMetaspaceSize指定元数据区的大小

-XX:NewRatio=n

  年老代与年轻代的比值,-XX:NewRatio=2, 表示年老代与年轻代的比值为2:1

-XX:SurvivorRatio=n

  Eden区与Survivor区的大小比值,-XX:SurvivorRatio=8表示Eden区与Survivor区的大小比值是8:1:1,因为Survivor区有两个(from, to)

 

 

你可能感兴趣的:(JVM)