JVM学习-监控工具(一)

使用数据说明问题,使用知识分析问题,使用工具处理问题

无监控,不调优!

命令行工具

在JDK安装目录下,可以查看到相应的命令行工具,如下图
在这里插入图片描述

jps(Java Process Status)

显示指定系统内所有的Hotpot虚拟机进程,可用于查询正在运行的虚拟机进程,对于本地虚拟机进程来说,进程的本地虚拟机ID与操作系统的进程ID是一致的,是唯一的

基本语法
  • jps [options] [hostid]
  • 【options】
  • -q:仅显示LVMID(local virtual machine id),即本地虚拟机唯一ID,不显示主类的名称
  • -l:输出应用程序主类的全类名或如果进程执行的是jar包,则输出jar完整路径
  • -m:输出虚拟机进程启动时传递给主类main()的参数
  • -v:列出虚拟机进程启动时的JVM参数,比如:-Xms20m -Xmx50m是启动程序指定的JVM参数
  • 补充:如果某Java进程关闭了默认开启的UsePerfData参数(即使用参数-XX:-UsePerfData),那么jps命令将无法探知该Java进程
//测试代码
public class ScannerTest {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String info = scanner.next();}
}
//通过jps查看Java进程
C:\Users\Administrator\IdeaProjects\jvm>jps
14000 ScannerTest          //---查看到运行的程序
5936 Jps
8640 Launcher              //虚拟机启动的进程
2856
7496 RemoteMavenServer36
//只显示pid
C:\Users\Administrator\IdeaProjects\jvm>jps -q
14000
8640
9920
2856
7496
//完整全类名
C:\Users\Administrator\IdeaProjects\jvm>jps -l
10224 sun.tools.jps.Jps
14000 com.chapter12.ScannerTest
8640 org.jetbrains.jps.cmdline.Launcher
2856
7496 org.jetbrains.idea.maven.server.RemoteMavenServer36
C:\Users\Administrator\IdeaProjects\jvm>jps -m
14000 ScannerTest
8640 Launcher D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/guava-27.1-jre.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/httpcore-4.4.12
.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/resources_en.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/plugins/java/lib/aether-depend
ency-resolver.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/protobuf-java-3.5.1.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/netty-
codec-4.1.41.Final.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/netty-buffer-4.1.41.Final.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5
/lib/qdox-2.0-M10.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/jdom.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/plugins/java/lib/aeth
er-util-1.1.0.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/idea_rt.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/lib/netty-transport-4.
1.41.Final.jar;D:/Program Files/JetBrains/IntelliJ IDEA 2019.3.5/pl
2856
7496 RemoteMavenServer36
9084 Jps -m
C:\Users\Administrator\IdeaProjects\jvm>jps -v
14000 ScannerTest -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar=65018:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\bin -
Dfile.encoding=UTF-8
8640 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=C:/Users/Administrator/Id
eaProjects/jvm -Dpreload.config.path=C:/Users/Administrator/.IntelliJIdea2019.3/config/options -Dexternal.project.config=C:\Users\Administrator\.IntelliJIde
a2019.3\system\external_build_system\jvm.f468d1e -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.ini
tialSeedUniquifier=-7130423394365373067 -Dfile.encoding=GBK -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2019.3 -Didea.home.path=D
:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5 -Didea.config.path=C:\Users\Administrator/.IntelliJIdea2019.3/config -Didea.plugins.path=C:\Users\Administr
ator/.IntelliJIdea2019.3/config/plugins -Djps.log.dir=C:/Users/Administrator/.IntelliJIdea2019.3/system/log/build-log -Djps.fallback.jdk.home=D:/Program Fil
es/JetBrains/IntelliJ IDEA 2019.3.5/jbr -Djps.fallback.jdk.version=11.0.6 -Dio.netty.noUnsafe=true -Dj
2856  exit -Xms128m -Xmx2048m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCa
nonPrefixCache=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastT
hrow -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -javaagent:C:\Users\Public\.jetbrains\jetbrains
-agent-v3.2.0.de72.619 -Djb.vmOptionsFile=C:\Users\Administrator\.IntelliJIdea2019.3\config\idea64.exe.vmoptions -Djava.library.path=D:\Program Files\JetBra
ins\IntelliJ IDEA 2019.3.5\jbr\\bin;D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\jbr\\bin\server -Didea.jre.check=true -Dide.native.launcher=true -Dide
a.paths.selector=IntelliJIdea2019.3 -XX:ErrorFile=C:\Users\Administrator\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\Administrator\java_error_in_ide
a.hprof
6360 Jps -Dapplication.home=D:\Program Files\Java\jdk1.8.0_131 -Xms8m
7496 RemoteMavenServer36 -Djava.awt.headless=true -Dmaven.defaultProjectBuilder.disableGlobalModelCache=true -Xmx768m -Didea.maven.embedder.version=3.8.4 -D
maven.ext.class.path=D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\plugins\maven\lib\maven-event-listener.jar -Dfile.encoding=GBK//如果在程序运行时添加-XX:-UsePerfData,则通过jps无法查看
C:\Users\Administrator\IdeaProjects\jvm>jps
3268 Jps
2856
6776 Launcher
7496 RemoteMavenServer36
jstat-查看JVM编译信息

jstat(JVM statistics Monitoring Tool):用于监视虚拟机各种运行状态信息的命令行工具,它可以显示本地或远程进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面下,jstat是性能问题的首选工具,用于检测垃圾回收问题以及内存泄漏问题

  • 基本语法
    jstat - [-t] [-h] [ []]
  • [options]- 类装载相关
  • 类装载相关 -class:显示ClassLoader的相关信息:类装载,卸载数量,总空间,类装载所消耗时间
//查询1次
C:\Users\Administrator\IdeaProjects\jvm>jstat -class 5752
Loaded  Bytes  Unloaded  Bytes     Time728  1447.3        0     0.0       0.08
  • [options]-垃圾回收相关
    • 垃圾回收相关-gc:显示与GC相关的堆信息,包括Eden区,两个Survivor区,老年代、永久代等的容量,已用空间,GC时间合计等信息
C:\Users\Administrator\IdeaProjects\jvm>jstat -gc 10988S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
21504.0 21504.0  0.0    0.0   131072.0 10485.8   348160.0     0.0     4480.0 770.4  384.0   75.9       0    0.000   0      0.000    0.000
//S0C:表示Survivor0区capacity(容量)
//S0U:表示Survivor0区Use
//EC:eden区Capacity
//EU:eden区Use
//OC:Old区capacity
//OU:Old区use
//MC:Method区capacity
//MU:Method区Use
//YGC:Young Gabage Collection次数
//YGCT:Young Gabage Collection时间
//FGC:Full Gabage Collection次数
//FGCT:Full Gabage Collection时间
//GCT:总Gabage Collection Time时间
//CCSC:Compact Class Space Capacity压缩类空间大小
//CCSU:Compact Class Space Use
public class GCTest {public static void main(String[] args) {ArrayList<byte[]> list = new ArrayList<>();for (int i = 0; i < 1000; i++) {byte[] arr = new byte[1024 * 1024];list.add(arr);try {Thread.sleep(1200);} catch (InterruptedException e) {e.printStackTrace();}}}
}C:\Users\Administrator\IdeaProjects\jvm>jstat -gc 1196 1000 10S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
2048.0 2048.0  0.0   2024.0 16384.0   1024.0   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   2355.2   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   3379.2   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   3379.2   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   4403.2   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   5427.3   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   6451.3   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   7475.3   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   8499.3   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
2048.0 2048.0  0.0   2024.0 16384.0   8499.3   40960.0    11400.2   4864.0 3993.6 512.0  446.8       1    0.007   0      0.000    0.007
  • -gccapacity:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用最大、最小空间
  • -gcutil:显示内容与-gc基本相同,但输出关注已使用空间占总空间百分比
C:\Users\Administrator\IdeaProjects\jvm>jstat -gcutil 5752 1000 10S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT0.00   0.00  91.36  69.94  82.19  87.27      2    0.013     1    0.007    0.0210.00   0.00  97.61  69.94  82.19  87.27      2    0.013     1    0.007    0.0210.00   0.00  97.61  69.94  82.19  87.27      2    0.013     1    0.007    0.0210.00   0.00  25.00  99.81  82.19  87.27      2    0.013     2    0.016    0.0290.00   0.00  33.09  99.81  82.19  87.27      2    0.013     2    0.016    0.0290.00   0.00  39.34  99.81  82.19  87.27      2    0.013     2    0.016    0.0290.00   0.00  45.59  99.81  82.19  87.27      2    0.013     2    0.016    0.0290.00   0.00  51.84  99.81  82.19  87.27      2    0.013     2    0.016    0.0290.00   0.00  51.84  99.81  82.19  87.27      2    0.013     2    0.016    0.0290.00   0.00  58.09  99.81  82.19  87.27      2    0.013     2    0.016    0.029
  • -gccause:与-gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因
C:\Users\Administrator\IdeaProjects\jvm>jstat -gccause 3788 1000 100S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC0.00   0.00  47.61  69.94  82.16  87.27      2    0.012     1    0.008    0.020 Allocation Failure   No GC0.00   0.00  53.86  69.94  82.16  87.27      2    0.012     1    0.008    0.020 Allocation Failure   No GC0.00   0.00  53.86  69.94  82.16  87.27      2    0.012     1    0.008    0.020 Allocation Failure   No GC
  • -gcnew:显示新生代GC状况
  • -gcnewcapacity:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
  • -gcold:显示老年代GC状况
  • interval参数:用于指定输出统计数据的周期,单位为毫秒,即查询间隔
//打印每1秒1次
C:\Users\Administrator\IdeaProjects\jvm>jstat -class 10988 1000
Loaded  Bytes  Unloaded  Bytes     Time728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23
  • count参数:用于指定查询的总次数
//打印每1秒1次,打印10次
C:\Users\Administrator\IdeaProjects\jvm>jstat -class 10988 1000 10
Loaded  Bytes  Unloaded  Bytes     Time728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23728  1447.3        0     0.0       0.23
  • -t参数:可以在输出信息前加上一个Timestamp列,显示程序的运行时间,单位:秒
  • 经验:比较Java进程的启动时间以及总GC时间(GCT),或者两次测量的间隔时间以及总GC时间的增量,来得出GC时间占运行时间的比例
  • 如果该比例超过20%,则说明目前堆的压力较大,如果该比例超过90%,则说明堆里几乎没有可用空间,随时都可能抛出OOM异常
C:\Users\Administrator\IdeaProjects\jvm>jstat -class -t 10988 1000 10
Timestamp       Loaded  Bytes  Unloaded  Bytes     Time233.1    728  1447.3        0     0.0       0.23234.1    728  1447.3        0     0.0       0.23235.1    728  1447.3        0     0.0       0.23236.1    728  1447.3        0     0.0       0.23237.1    728  1447.3        0     0.0       0.23238.1    728  1447.3        0     0.0       0.23239.1    728  1447.3        0     0.0       0.23240.1    728  1447.3        0     0.0       0.23241.2    728  1447.3        0     0.0       0.23242.2    728  1447.3        0     0.0       0.23
  • -h参数:可以在周期性数据输出时,输出多少行数据后输出一个表头信息
//h3表示输出3行后输出一个表头
C:\Users\Administrator\IdeaProjects\jvm>jstat -class -t -h3 10988 1000 10
Timestamp       Loaded  Bytes  Unloaded  Bytes     Time288.5    728  1447.3        0     0.0       0.23289.5    728  1447.3        0     0.0       0.23290.6    728  1447.3        0     0.0       0.23
Timestamp       Loaded  Bytes  Unloaded  Bytes     Time291.6    728  1447.3        0     0.0       0.23292.6    728  1447.3        0     0.0       0.23293.6    728  1447.3        0     0.0       0.23
Timestamp       Loaded  Bytes  Unloaded  Bytes     Time294.6    728  1447.3        0     0.0       0.23295.6    728  1447.3        0     0.0       0.23296.6    728  1447.3        0     0.0       0.23
Timestamp       Loaded  Bytes  Unloaded  Bytes     Time297.6    728  1447.3        0     0.0       0.23
  • JIT相关的
    • compiler:显示JIT编译器编译过的方法和耗时等信息
C:\Users\Administrator\IdeaProjects\jvm>jstat -compiler 10988
Compiled Failed Invalid   Time   FailedType FailedMethod95      0       0     0.03          0
  • -printcompilation:输出已经被JIT编译的方法
C:\Users\Administrator\IdeaProjects\jvm>jstat -printcompilation 10988
Compiled  Size  Type Method95    138    1 java/lang/StringBuffer append
  • jstat如何判断内存泄漏
  • ①在长时间运行的Java程序中,可以运行jstat命令连续获取多行性能数据,并取这几行数据中OU列的最小值
  • ②每隔一段较长时间重复一次上述操作,来获得多组OU(Old Use)最小值,如果这些值呈上涨趋势,则说明该Java程序的老年代内存使用量不断上涨,这意味着无法回收的对象在不断增加,因此有可能存在内存泄漏
jifo(Configuration Info for Java)
  • 查看虚拟机配置参数信息,也可用于调整虚拟机的配置参数
  • 很多情况下,Java应用程序不会指定所有的Java虚拟机参数,而此时,开发人员可能不知道某一个具体的Java虚拟机参数的默认值,在这情况下,可能需要通过查找文档获取某个参数的默认值
  • 查看
//查看由System.getProperties()取得的参数------------jinfo -flags PID
C:\Users\Administrator\IdeaProjects\jvm>jinfo -sysprops 14272
Attaching to process ID 14272, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11
Java System Properties:java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.131-b11
sun.boot.library.path = D:\Program Files\Java\jdk1.8.0_131\jre\bin
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = ;
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level =
sun.java.launcher = SUN_STANDARD
user.script =
user.country = CN
user.dir = C:\Users\Administrator\IdeaProjects\jvm
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.8.0_131-b11
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = D:\Program Files\Java\jdk1.8.0_131\jre\lib\endorsed
line.separator =java.io.tmpdir = C:\Users\ADMINI~1\AppData\Local\Temp\
java.vm.specification.vendor = Oracle Corporation
user.variant =
os.name = Windows 10
sun.jnu.encoding = GBK
java.library.path = D:\Program Files\Java\jdk1.8.0_131\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Oracle\Java\
javapath;D:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell
\v1.0\;C:\Windows\System32\OpenSSH\;D:\Program Files (x86)\NetSarang\Xshell 7\;D:\Program Files (x86)\NetSarang\Xftp 7\;D:\SoftWare\Linux\hadoop\hadoop-3.1.
0\bin;C:\Program Files\Docker\Docker\resources\bin;D:\Program Files\Java\jdk1.8.0_131\bin;D:\SoftWare\apache-maven-3.8.4\bin;C:\Users\Administrator\AppData\
Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin;D:\Program Files\Java\jdk1.8.0_131\bin;;.
java.specification.name = Java Platform API Specification
java.class.version = 52.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 10.0
user.home = C:\Users\Administrator
user.timezone = Asia/Shanghai
java.awt.printerjob = sun.awt.windows.WPrinterJob
file.encoding = UTF-8
java.specification.version = 1.8
user.name = Administrator
java.class.path = D:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8
.0_131\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar
;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\
lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;D:\Program Files\
Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ex
t\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.
0_131\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.
0_131\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;D:\Program File
s\Java\jdk1.8.0_131\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;C:\Users\Administrator\IdeaProjects\jvm\target\classes;C:\Users\
Administrator\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\P
rogram Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar
java.vm.specification.version = 1.8
sun.arch.data.model = 64
sun.java.command = com.chapter12.GCTest
java.home = D:\Program Files\Java\jdk1.8.0_131\jre
user.language = zh
java.specification.vendor = Oracle Corporation
awt.toolkit = sun.awt.windows.WToolkit
java.vm.info = mixed mode
java.version = 1.8.0_131
java.ext.dirs = D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path = D:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;D:\Program Files\Java\jdk1.
8.0_131\jre\lib\sunrsasign.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;D:\Program Files\Java\
jdk1.8.0_131\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_131\jre\classes
java.vendor = Oracle Corporation
file.separator = \
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.desktop = windows
sun.cpu.isalist = amd64VM Flags:
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=62914560 -XX:MaxHeapSize=62914560 -XX:MaxNewSize=20971520 -XX:MinHeapDeltaBytes=524288 -XX:N
ewSize=20971520 -XX:OldSize=41943040 -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLarg
ePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -Xms60m -Xmx60m -XX:SurvivorRatio=8 -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar=51523:D:\Program Files\JetBr
ains\IntelliJ IDEA 2019.3.5\bin -Dfile.encoding=UTF-8
//-flags:查看赋过值的参数------------jinfo -flags PID
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flags 8828
Attaching to process ID 8828, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=62914560 -XX:MaxHeapSize=62914560 -XX:MaxNewSize=20971520 -XX:MinHeapDeltaBytes=524288 -XX:N
ewSize=20971520 -XX:OldSize=41943040 -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLarg
ePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -Xms60m -Xmx60m -XX:SurvivorRatio=8 -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar=51584:D:\Program Files\JetBr
ains\IntelliJ IDEA 2019.3.5\bin -Dfile.encoding=UTF-8
//jinfo -flag 具体参数PID------------jinfo -flag 具体参数 PID
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag SurvivorRatio 13940
-XX:SurvivorRatio=8
//+UseParrelGC(+表示使用,-表示未使用)
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag UseParallelGC 5764
-XX:+UseParallelGC
  • 修改
  • jinfo不仅可以查看运行时某一个Java虚拟机参数的实际取值,甚至可以在运行时修改部分参数,使之立即生效
  • 并非所有参数都支持动态修改。参数没有被标记为manageable的flag可以被实时修改,其实这个修改能力是极其有限的
  • 查看被标记为manageable的参数
    在这里插入图片描述
C:\Users\Administrator\IdeaProjects\jvm>java -XX:+PrintFlagsFinal -version > a.txt
java version "17.0.11" 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.11+7-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.11+7-LTS-207, mixed mode, sharing)//在windows下可以使用Linux Shell的工具,否则使用grep会报错
DESKTOP-BEU2U68:/mnt/host/c/Users/Administrator/IdeaProjects/jvm# cat a.txt | grep manageableuintx G1PeriodicGCInterval                     = 0                                      {manageable} {default}double G1PeriodicGCSystemLoadThreshold          = 0.000000                               {manageable} {default}bool HeapDumpAfterFullGC                      = false                                  {manageable} {default}bool HeapDumpBeforeFullGC                     = false                                  {manageable} {default}intx HeapDumpGzipLevel                        = 0                                      {manageable} {default}bool HeapDumpOnOutOfMemoryError               = false                                  {manageable} {default}ccstr HeapDumpPath                             =                                        {manageable} {default}uintx MaxHeapFreeRatio                         = 70                                     {manageable} {default}uintx MinHeapFreeRatio                         = 40                                     {manageable} {default}bool PrintClassHistogram                      = false                                  {manageable} {default}bool PrintConcurrentLocks                     = false                                  {manageable} {default}bool ShowCodeDetailsInExceptionMessages       = true                                   {manageable} {default}size_t SoftMaxHeapSize                          = 8547991552                             {manageable} {ergonomic}
//修改相应的参数
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag PrintGCDetails 13716
-XX:-PrintGCDetails
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag +PrintGCDetails 13716
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag PrintGCDetails 13716
-XX:+PrintGCDetails
//------------------------------------------------------------------------
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag MaxHeapFreeRatio 5588
-XX:MaxHeapFreeRatio=100
C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag MaxHeapFreeRatio=90 5588C:\Users\Administrator\IdeaProjects\jvm>jinfo -flag MaxHeapFreeRatio 5588
-XX:MaxHeapFreeRatio=90
  • 拓展
  • java -XX:+PrintFlagsIntial:查看所有JVM参数启动的初始值
  • java -XX:+PrintFlagsFinal:查看所有JVM参数启动的最终值
  • java -XX:+PrintCommandLineFlags:查看那些已经被用户或JVM设置过的详细的XX参数的名称和值
//+PrintCommandLineFlags
-XX:ConcGCThreads=2 -XX:G1ConcRefinementThreads=6 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=534181568 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=8546905088 -XX:MinHeapSize=6815736 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation 
//-XX:+PrintFlagsInitial参数,会显示以下信息
[Global flags]uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}uintx AdaptiveSizePausePolicy                   = 0                                   {product}uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}uintx AdaptiveSizePolicyOutputInterval          = 0                                   {product}uintx AdaptiveSizePolicyWeight                  = 10                                  {product}uintx AdaptiveSizeThroughPutPolicy              = 0                                   {product}uintx AdaptiveTimeWeight                        = 25                                  {product}bool AdjustConcurrency                         = false                               {product}bool AggressiveOpts                            = false                               {product}... ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/344914.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端三大件速成 05 javascript(1)js组成、引入、基本语法

文章目录 一、js组成二、js的引入三、基本语法1、变量2、基本规范3、关键字4、数据类型&#xff08;1&#xff09;基本数据类型&#xff08;2&#xff09;引用数据类型&#xff08;3&#xff09;数据类型转换&#xff08;4&#xff09;typeof运算符 5、运算符6、流程控制&#…

轻松构建聊天机器人,大模型 RAG 有了更强大的AI检索器

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

每日两题6

文章目录 删除并获得点数粉刷房子 删除并获得点数 分析 class Solution { public:int deleteAndEarn(vector<int>& nums) {const int N 10001;// 预处理int arr[N] {0};for (int& e : nums)arr[e] e;// 在 arr 上进行 打家劫舍 问题vector<int> f(N),…

《2024年网络安全预测:未来规划深度洞察》

2024 年打击网络对手的计划。 阅读报告&#xff0c;了解我们的专家对 2024 年网络安全行业的预测&#xff0c;包括&#xff1a; 攻击者将人工智能融入其行动中&#xff0c;防御者利用它来加强检测和响应 民族国家继续开展网络行动以实现其地缘政治目标 攻击者继续利用零日漏洞…

Git从入门到放弃

由于我的Git学的不太好&#xff0c;所以为了能够将以后我的学习笔记能够整理的更好&#xff0c;我先要系统的学习一下git&#xff0c;文章由此产生。 文章笔记源自尚硅谷Git入门到精通全套教程视频内容 1 进入官网 学习新技术的第一步需要熟悉官网&#xff0c;Git也不例外。ht…

Java 环境配置 -- Java 语言的安装、配置、编译与运行

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 002 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

为什么要做与运算?网关如何和ip做与运算?

在计算机网络中&#xff0c;“与运算”是一个基本而重要的概念&#xff0c;尤其在IP地址和子网掩码的处理中起着关键作用。本文将解释为什么要进行与运算&#xff0c;以及网关如何和IP地址进行与运算。 为什么要做与运算&#xff1f; 1. 确定网络地址 与运算&#xff08;AND…

自然语言处理:第三十二章HippoRAG:性能提高20% - 受海马体启发的RAG

文章链接: HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models 项目地址: OSU-NLP-Group/HippoRAG: HippoRAG is a novel RAG framework inspired by human long-term memory that enables LLMs to continuously integrate knowledge across e…

二分+模拟,CF1461D - Divide and Summarize

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1461D - Codeforces 二、解题报告 1、思路分析 我们发现每次分裂操作结果都是固定的 我们从初始序列分裂出两个确定的子序列&#xff0c;两个确定的子序列又分裂出4个确定的子序列 那么也就是说…

实验二、网络属性设置《计算机网络》

精神状态 be like&#xff1a;边写边崩溃&#xff0c;越写越得劲儿。 目录 一、实验目的&#xff1a; 二、实验内容 三、实验步骤&#xff1a; 四、实验小结 一、实验目的&#xff1a; 掌握 IP 地址、子网掩码等网络属性的设置。 二、实验内容 预备知识&#xff1a; 1、…

android集成百度文心一言实现对话功能,实战项目讲解,人人都能拥有一款ai应用

大家好&#xff0c;今天给大家讲解下如何实现一个基于百度文心一言的app功能&#xff0c;app内部同时集成了讯飞的语音识别。本文适用于有android基础的小伙伴阅读&#xff0c;文章末尾放上本项目用到的全部实例代码&#xff0c;在使用前请务必看完本文章。 先来给大家看看效果…

php质量工具系列之PHPCPD

PHPCPD 用于检测重复代码&#xff0c;直观的说就是复制粘贴再稍微改改 该工具作者已经 停止维护 安装 composer global require --dev sebastian/phpcpd执行 phpcpd --log-pmd phpcpd_result.xml ./app参数介绍 --log-pmd 将结果保存在phpcpd_result.xml 中 ./app 是phpcpd扫…

编译原理-词法分析(实验 C语言)

编译原理-词法分析 1. 实验目的 设计、编写并调试一个词法分析程序&#xff0c;加深对词法分析原理的理解 2. 实验要求 2.1 待分析的简单语言的词法 关键字&#xff1a;begin&#xff0c;if&#xff0c;then&#xff0c;while&#xff0c;do&#xff0c;end 所有关键字都是…

DevOps入门

DevOps: 让技术团队、运维、测试等团队实现一体式流程自动化 CICD: CI:持续集成 CD:持续交付持续集成:从编码、编译、测试、发布项目到仓库的自动化流程持续交付:包含持续集成&#xff0c;并且增加将项目部署到对应的环境的自动化流程 传统项目闭环流程: DevOps闭环流程…

基于非下采样小波包分析的滚动轴承故障诊断(MATLAB R2021B)

小波变换具有良好的时频局部化特性和多分辨率特性&#xff0c;可准确定位信号的突变点并可在不同尺度上描述信号的局部细节特征&#xff0c;被广泛应用于信号降噪。但标准正交小波变换不具有平移不变性&#xff0c;采用标准正交小波对信号消噪后&#xff0c;会在脉冲尖峰处产生…

VSCode调试揭秘:Live Server助力完美测试Cookie与Session,远超“Open in Browser“!

文章目录 一、项目场景&#xff1a;二、问题描述1. open in browser&#xff1a;2. open with live server 三、原因分析&#xff1a;先了解一下open in browser和open with live server的区别两者的优缺点open in browseropen with live server 四、解决方案&#xff1a;总结 …

Java开发-面试题-0005-==和String的equals()和String的intern()方法的区别

Java开发-面试题-0005-和String的equals()和String的intern()方法的区别 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff08;纯纯技术…

前端多人项目开发中,如何保证CSS样式不冲突?

在前端项目开发中&#xff0c;例如突然来了一个大项目&#xff0c;很可能就需要多人一起开发&#xff0c;领导说了&#xff0c;要快&#xff0c;要快&#xff0c;要快&#xff0c;你们给我快。然后下面大伙就一拥而上&#xff0c;干着干着发现&#xff0c;一更新代码&#xff0…

转型AI产品经理(5):“锚定效应”如何应用在Chatbot产品中

锚定效应是认知心理学中一个重要的概念&#xff0c;它描述了人们在进行判断或决策时&#xff0c;往往过于依赖最先接收到的信息或数字&#xff08;即“锚点”&#xff09;&#xff0c;即使后续信息与初始锚点无关甚至相反&#xff0c;这个初始信息也会显著地影响最终的判断结果…

【下篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了YoloX, 今天从Yolov6开始。 YOLOv6:面向工业应用的单级物体检测框架 美团视觉人工智能事业部(Meituan Vision AI Department)于 2022 年 9 月在…