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.mzph.cn/pingmian/22036.shtml

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

相关文章

【自然语言处理】文本情感分析

文本情感分析 1 任务目标 1.1 案例简介 情感分析旨在挖掘文本中的主观信息&#xff0c;它是自然语言处理中的经典任务。在本次任务中&#xff0c;我们将在影评文本数据集&#xff08;Rotten Tomato&#xff09;上进行情感分析&#xff0c;通过实现课堂讲授的模型方法&#x…

OpenStack无效数据清空脚本

​​​​​​​介绍 在以openstack为底层开发的一些项目中&#xff0c;常常会遇到项目中数据与openstack数据不同步的问题&#xff0c;为了简化清空无效数据的繁琐&#xff0c;提供以下脚本便于运维操作。 环境变量 [rootcloud ~]# cat admin.sh export OS_USERNAMEadmin ex…

蓝图collapseNodes很有用

学到了&#xff0c;选中N个节点后&#xff0c;再右键collapseNode&#xff0c;可以使代码很清晰&#xff0c;双击后可以看到相应的代码&#xff0c;具有层次感。

【python科学文献计量】关于中国知网检索策略的验证,以事故伤害严重程度检索为例

关于中国知网检索策略的验证,以事故伤害严重程度检索为例 1 背景2 文献下载3 数据处理1 背景 由于要进行相关研究内容的综述,需要了解当前我国对于事故伤害严重程度的研究现状,采用国内较为知名的检索网站(中国知网)进行文献数据集检索 由于最近知网出bug,检索的结果在…

【最新鸿蒙应用开发】——使用axios完成手机号注册业务

使用Axios请求实现目标效果图&#xff1a; 短信验证码登录 校验图形验证码&#xff0c;校验通过 发送短信验证码到用户手机上&#xff0c;可通过在线 WebSocket查看&#xff1a;wss://guardian-api.itheima.net/verifyCode 根据 手机号 短信验证码 实现登录 更新图形验证码…

日本指数实时API接口

日本 指数 实时API接口 # Restful API https://tsanghi.com/api/fin/index/JPN/realtime?token{token}&ticker{ticker}指定指数代码&#xff0c;获取该指数的实时行情&#xff08;开、高、低、收、量&#xff09;。 更新周期&#xff1a;实时。 请求方式&#xff1a;GET。…

CV每日论文--2024.6.4

1、Mixed Diffusion for 3D Indoor Scene Synthesis 中文 标题&#xff1a;用于 3D 室内场景合成的混合扩散 简介&#xff1a;这篇论文提出了一种名为MiDiffusion的混合离散-连续扩散模型,用于从给定的房间类型、平面图和可能存在的物体中合成逼真的3D室内场景。 作者指出,该…

【Unity实战篇 】 | Unity实现UGUI颜色渐变,支持透明渐变

前言 【Unity实战篇 】 | Unity实现UGUI颜色渐变&#xff0c;支持透明渐变一、双层颜色渐变1.1 组件属性面板1.2 效果及代码 二、多层颜色渐变2.1 组件属性面板2.2 效果及代码 总结 前言 在Unity中UGUI的实现图片和文字颜色渐变效果是一个很常见的需求。下面就来看一下颜色渐变…

机器学习中的集成学习

&#x1f4ac;内容概要 1 集成学习概述及主要研究领域 2 简单集成技术  2.1 投票法  2.2 平均法  2.3 加权平均 3 高级集成技术  3.1 Bagging  3.2 Boosting  3.3 Bagging vs Boosting 4 基于Bagging和Boosting的机器学习算法  4.1 sklearn中的Bagging算法  4.2 sklea…

1961. 检查字符串是否为数组前缀 - 力扣

1. 题目 给你一个字符串 s 和一个字符串数组 words &#xff0c;请你判断 s 是否为 words 的 前缀字符串 。 字符串 s 要成为 words 的 前缀字符串 &#xff0c;需要满足&#xff1a;s 可以由 words 中的前 k&#xff08;k 为 正数 &#xff09;个字符串按顺序相连得到&#xf…

大型语言模型的工作原理(LLM:从零学起)

目录 一、说明 二、LLM如何运作 三、预训练&#xff1a;基本模型 四、微调&#xff1a;培训助手 五、RLHF&#xff1a;从人类反馈中强化学习 六、提示工程 七、总结 一、说明 这是我们谈论LLM系列的第二篇文章。在本文中&#xff0c;我们旨在为大型语言模型 &#xff08;LLM&am…

企业微信hook接口协议,ipad协议http,chatid转群id

chatid转群id 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","chatid":"wrO9o4EAAAeR_nSlmjeX1RWrKAKxN8jQ" } 返回示例 {&…

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册 环境信息&#xff1a;VMware虚拟软件16.0 首先查看KylinOS服务器版本&#xff1a;nkvers 备注&#xff1a; (Tercel) 版本是 V10 SP1 版本&#xff0c; (Sword) 版本是 V10 SP2 版本&#xff0c; (Lance) 版本是 V10 …

UE4 使用样条线做鱼儿封闭路径动画

描述&#xff1a;鱼儿的游动动画的特点 1.通常是始终保持Y (Pitch)轴角度不变 2.调头的时候改变的是Z轴角度 效果&#xff1a;调头的时候比较自然 蓝图&#xff1a; 最后为了让鱼儿有恒定的游动速度&#xff0c;增加以下蓝图节点&#xff0c;游动速度为50

CTFHUB-技能树-web-web前置技能-HTTP协议全

目录 1.请求方式 2.302跳转 3.Cookie 4.基础认证 5.响应包源码 1.请求方式 curl -v -X http://challenge-3022c877a8dcedeb.sandbox.ctfhub.com:10800/index.php 2.302跳转 参考链接&#xff1a;http://t.csdnimg.cn/aqdNG 301——永久性重定向。该状态码表示请求的资源已…

Avue-data数据大屏显示柱状图(附Demo讲解)

目录 前言1. 接口方式2. SQL查询 前言 由于网上对这部分的知识点相对较少&#xff0c;研究半天的框架最终输出结果 此文主要以记录总结的方式展示如何使用数据库以及接口方式 需要明白柱状图的返回数据格式&#xff1a; #柱状图数据格式 {"categories": ["苹…

组织是什么,为什么需要组织,为什么需要公司

垂直组织 组织架构设计&#xff0c;曾经咱们多个章节进行沟通&#xff0c;今天再回到组织本身。不妨可以思考一个这样的问题&#xff0c;或者随访身边的老板或者朋友&#xff0c;让他们绘制一个组织架构图&#xff0c;或者绘制一个本组织一个视图&#xff0c;得到以下图的示意…

[Redis]Set类型

集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;集合中 1&#xff09;元素之间是无序的 2&#xff09;元素不允许重复 一个集合中最多可以存储2^32-1个元素。 Redis 除了支持集合内的增删查改操作&#xff0c;同时还支持多个集合取交…

盲盒小程序库存管理的关键策略

随着盲盒经济的兴起&#xff0c;越来越多的商家开始投入盲盒小程序的开发与运营。然而&#xff0c;在享受市场红利的同时&#xff0c;库存管理的问题也随之而来。合理的库存管理不仅能够满足用户需求&#xff0c;还能有效优化库存周转率&#xff0c;提升商家的盈利能力。本文将…

有光摄影分享网站系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;足球资讯管理&#xff0c;球队管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;活动&#xff0c;论坛…