当前位置: 首页 > news >正文

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}... ...

相关文章:

JVM学习-监控工具(一)

使用数据说明问题&#xff0c;使用知识分析问题&#xff0c;使用工具处理问题 无监控&#xff0c;不调优&#xff01; 命令行工具 在JDK安装目录下&#xff0c;可以查看到相应的命令行工具&#xff0c;如下图 jps(Java Process Status) 显示指定系统内所有的Hotpot虚拟机…...

基础—SQL—DQL(数据查询语言)分页查询

一、引言 上一篇博客学习了排序查询&#xff0c;这次来讲查询的最后一个部分&#xff1a;分页查询。 涉及到的关键字是&#xff1a;LIMIT 。 二、DQL—分页查询 对于分页&#xff0c;不管以后做的是传统的管理系统还是做互联网的项目&#xff0c;基本上都会遇到分页查询的操…...

独立开发者通过这100种方式赚钱

独立开发者可以通过多种方式赚钱&#xff1a; 销售游戏&#xff1a;独立开发者可以通过 Steam、Itch.io 和 App Store 等平台直接向消费者销售他们的游戏。 他们还可以在自己的网站上出售游戏的实体副本或数字下载。 提供游戏内购买&#xff1a;一些游戏包括微交易或游戏内购…...

gitlab服务器迁移(亲测有效)

描述&#xff1a;最近公司迁移gitlab&#xff0c;我没有迁移过&#xff0c;经过网上查找资料最终完成迁移&#xff0c;途中也遇到挺多坑和两个问题&#xff0c;希望能帮到你。 新服务器安装gitlab 注意&#xff1a;新服务器gitlab版本也需要和旧版本一致。 首先查看原Gitlab…...

【刷题(12)】图论

一、图论问题基础 在 LeetCode 中&#xff0c;「岛屿问题」是一个系列系列问题&#xff0c;比如&#xff1a; 岛屿数量 &#xff08;Easy&#xff09;岛屿的周长 &#xff08;Easy&#xff09;岛屿的最大面积 &#xff08;Medium&#xff09;最大人工岛 &#xff08;Hard&…...

FASTGPT:可视化开发、运营和使用的AI原生应用

近年来&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;AI的应用逐渐渗透到各行各业。作为一种全新的开发模式&#xff0c;AI原生应用正逐步成为行业的焦点。在这方面&#xff0c;FASTGPT无疑是一款颇具代表性的产品。本文将详细介绍FASTGPT的设…...

代码随想录-Day27

39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重…...

TalkingData数据统计:洞察数字世界的关键工具

TalkingData数据统计&#xff1a;洞察数字世界的关键工具 在数字化时代&#xff0c;数据已成为推动社会进步和商业决策的核心动力。TalkingData作为国内领先的移动数据服务平台&#xff0c;为众多企业提供了全面、精准的数据统计服务。本文将深入探讨TalkingData数据统计的应用…...

printf 一次性写

PWN里printf漏洞感觉很小&#xff0c;可发现居然理解的不全。 一般情况下&#xff0c;当buf不在栈内时&#xff0c;就不能直接写指针。这时候需要用到rbp链或者argv链。一般操作是第一次改指针&#xff0c;第二次改数值。 DAS昨天这里只给了一次机会然后就exit了。今天ckyen给…...

【Axure高保真原型】切换查看大图列表

今天和大家分享切换查看大图列表的原型模板&#xff0c;我们可以点击列表里的图片查看对应的大图&#xff0c;点击左右箭头可以切换切换上一页或下一页&#xff0c;如果是首页会自动禁用左箭头&#xff0c;末尾页会自动禁用右箭头。这个原型模板是用中继器制作的&#xff0c;所…...

Ant-Design-Vue动态表头并填充数据

Ant-Design-Vue动态表头并填充数据 Ant-Design-Vue 是一个基于 Vue.js 的前端UI框架&#xff0c;它继承了 Ant Design 的优秀设计理念&#xff0c;并针对 Vue.js 进行了深度优化。在实际开发过程中&#xff0c;我们经常需要处理各种复杂的表格数据&#xff0c;而 Ant-Design-V…...

Python-匿名函数

一、概念 匿名函数造出来的是一个内存地址&#xff0c;且内存地址没有绑定任何名字&#xff0c;很快被当做垃圾清理掉。所以匿名函数只需要临时调用一次&#xff0c;而有名函数永久使用&#xff1b; 匿名函数一般和其他函数配合使用&#xff1b; # 有名函数def func(x, y):…...

探索Web3工具:正确使用区块链平台工具的秘诀

在当今日新月异的数字时代&#xff0c;区块链技术正以惊人的速度改变着我们的生活和工作方式。尤其对于那些想要踏入区块链世界的人来说&#xff0c;正确使用区块链平台工具至关重要。本文将向您介绍一些关键的Web3工具&#xff0c;并以TestnetX.com为例&#xff0c;展示如何利…...

器利而事善——datagrip 的安装以及连接mysql

一&#xff0c;安装 下载&#xff1a;直接到官网下载即可&#xff0c; 破解&#xff1a;这是破解连接&#xff1a;https://pan.baidu.com/s/11BgOMp4Z9ddBrXwCVhwBng &#xff0c;提取码&#xff1a;abcd&#xff1b; 下载后&#xff0c;选择倒数第三个文件&#xff0c;打开da…...

C++标准模板(STL)- 迭代器库-迭代器原语-用于指示迭代器类别的空类类型

迭代器库-迭代器原语 迭代器库提供了五种迭代器的定义&#xff0c;同时还提供了迭代器特征、适配器及相关的工具函数。 迭代器分类 迭代器共有五 (C17 前)六 (C17 起)种&#xff1a;遗留输入迭代器 (LegacyInputIterator) 、遗留输出迭代器 (LegacyOutputIterator) 、遗留向前…...

ClickHouse 使用技巧总结

文章目录 数据导入、导出技巧外部文件导入导技巧使用集成表引擎导入、导出数据 建表技巧表引擎选择技巧分区键选择技巧数据结构选择技巧分区技巧 高级技巧物化视图投影位图变更数据捕获 常见报错及处理方法 数据导入、导出技巧 外部文件导入导技巧 ClickHouse作为OLAP即席分析…...

论文浅尝 | THINK-ON-GRAPH:基于知识图谱的深层次且可靠的大语言模型推理方法...

笔记整理&#xff1a;刘佳俊&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://arxiv.org/pdf/2307.07697.pdf 1. 动机 本文是IDEA研究院的工作&#xff0c;这篇工作将知识图谱的和大语言模型推理进行了结合&#xff0c;在每一步图推理中利用大…...

前端科举八股文-VUE篇

前端科举八股文-VUE篇 Vue响应式的基本原理?computed和watch的区别computed和methods的区别Slot是什么 ? 作用域插槽是什么?组件缓冲keep-alive是什么&#xff1f; 讲讲原理v-if&#xff0c;v-show的区别v-modal如何实现双向绑定组件中的data属性为什么是一个函数而不是对象…...

Websocket服务端结合内网穿透发布公网实现远程访问发送信息

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…...

GitHub 的底层数据库从 MySQL 5.7 无缝升级到 MySQL 8.0 的实践经验

提到 MySQL 这个数据库软件&#xff0c;相信大家再熟悉不过了&#xff0c;不论是市场流行度还是占有率一直一来都非常靠前。 那再提到 MySQL 5.7 这个具体的版本&#xff0c;大家是不是也同样感到非常熟悉&#xff1f; 相信不少个人或者团队的生产环境所用的 MySQL 数据库也曾…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...