网站联动,佛山网站策划公司,外国网站上做雅思考试,php网站运行很慢使用数据说明问题#xff0c;使用知识分析问题#xff0c;使用工具处理问题
无监控#xff0c;不调优#xff01;
命令行工具
在JDK安装目录下#xff0c;可以查看到相应的命令行工具#xff0c;如下图
jps(Java Process Status)
显示指定系统内所有的Hotpot虚拟机…使用数据说明问题使用知识分析问题使用工具处理问题
无监控不调优
命令行工具
在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\jvmjps
14000 ScannerTest //---查看到运行的程序
5936 Jps
8640 Launcher //虚拟机启动的进程
2856
7496 RemoteMavenServer36
//只显示pid
C:\Users\Administrator\IdeaProjects\jvmjps -q
14000
8640
9920
2856
7496
//完整全类名
C:\Users\Administrator\IdeaProjects\jvmjps -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\jvmjps -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\jvmjps -v
14000 ScannerTest -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar65018:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\bin -
Dfile.encodingUTF-8
8640 Launcher -Xmx700m -Djava.awt.headlesstrue -Djava.endorsed.dirs -Djdt.compiler.useSingleThreadtrue -Dpreload.project.pathC:/Users/Administrator/Id
eaProjects/jvm -Dpreload.config.pathC:/Users/Administrator/.IntelliJIdea2019.3/config/options -Dexternal.project.configC:\Users\Administrator\.IntelliJIde
a2019.3\system\external_build_system\jvm.f468d1e -Dcompile.parallelfalse -Drebuild.on.dependency.changetrue -Djava.net.preferIPv4Stacktrue -Dio.netty.ini
tialSeedUniquifier-7130423394365373067 -Dfile.encodingGBK -Duser.languagezh -Duser.countryCN -Didea.paths.selectorIntelliJIdea2019.3 -Didea.home.pathD
:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5 -Didea.config.pathC:\Users\Administrator/.IntelliJIdea2019.3/config -Didea.plugins.pathC:\Users\Administr
ator/.IntelliJIdea2019.3/config/plugins -Djps.log.dirC:/Users/Administrator/.IntelliJIdea2019.3/system/log/build-log -Djps.fallback.jdk.homeD:/Program Fil
es/JetBrains/IntelliJ IDEA 2019.3.5/jbr -Djps.fallback.jdk.version11.0.6 -Dio.netty.noUnsafetrue -Dj
2856 exit -Xms128m -Xmx2048m -XX:ReservedCodeCacheSize240m -XX:UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB50 -ea -XX:CICompilerCount2 -Dsun.io.useCa
nonPrefixCachefalse -Djava.net.preferIPv4Stacktrue -Djdk.http.auth.tunneling.disabledSchemes -XX:HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastT
hrow -Djdk.attach.allowAttachSelftrue -Dkotlinx.coroutines.debugoff -Djdk.module.illegalAccess.silenttrue -javaagent:C:\Users\Public\.jetbrains\jetbrains
-agent-v3.2.0.de72.619 -Djb.vmOptionsFileC:\Users\Administrator\.IntelliJIdea2019.3\config\idea64.exe.vmoptions -Djava.library.pathD:\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.checktrue -Dide.native.launchertrue -Dide
a.paths.selectorIntelliJIdea2019.3 -XX:ErrorFileC:\Users\Administrator\java_error_in_idea_%p.log -XX:HeapDumpPathC:\Users\Administrator\java_error_in_ide
a.hprof
6360 Jps -Dapplication.homeD:\Program Files\Java\jdk1.8.0_131 -Xms8m
7496 RemoteMavenServer36 -Djava.awt.headlesstrue -Dmaven.defaultProjectBuilder.disableGlobalModelCachetrue -Xmx768m -Didea.maven.embedder.version3.8.4 -D
maven.ext.class.pathD:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\plugins\maven\lib\maven-event-listener.jar -Dfile.encodingGBK//如果在程序运行时添加-XX:-UsePerfData,则通过jps无法查看
C:\Users\Administrator\IdeaProjects\jvmjps
3268 Jps
2856
6776 Launcher
7496 RemoteMavenServer36jstat-查看JVM编译信息
jstat(JVM statistics Monitoring Tool)用于监视虚拟机各种运行状态信息的命令行工具它可以显示本地或远程进程中的类装载、内存、垃圾收集、JIT编译等运行数据在没有GUI图形界面下jstat是性能问题的首选工具用于检测垃圾回收问题以及内存泄漏问题
基本语法 jstat - [-t] [-h] [ []]
[options]- 类装载相关
类装载相关 -class显示ClassLoader的相关信息类装载卸载数量总空间类装载所消耗时间
//查询1次
C:\Users\Administrator\IdeaProjects\jvmjstat -class 5752
Loaded Bytes Unloaded Bytes Time728 1447.3 0 0.0 0.08[options]-垃圾回收相关 垃圾回收相关-gc显示与GC相关的堆信息包括Eden区两个Survivor区老年代、永久代等的容量已用空间GC时间合计等信息
C:\Users\Administrator\IdeaProjects\jvmjstat -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
//ECeden区Capacity
//EUeden区Use
//OCOld区capacity
//OU:Old区use
//MCMethod区capacity
//MUMethod区Use
//YGCYoung Gabage Collection次数
//YGCTYoung Gabage Collection时间
//FGCFull Gabage Collection次数
//FGCTFull Gabage Collection时间
//GCT总Gabage Collection Time时间
//CCSCCompact Class Space Capacity压缩类空间大小
//CCSUCompact Class Space Use
public class GCTest {public static void main(String[] args) {ArrayListbyte[] 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\jvmjstat -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\jvmjstat -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\jvmjstat -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\jvmjstat -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.23count参数用于指定查询的总次数
//打印每1秒1次打印10次
C:\Users\Administrator\IdeaProjects\jvmjstat -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\jvmjstat -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\jvmjstat -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.23JIT相关的 compiler显示JIT编译器编译过的方法和耗时等信息
C:\Users\Administrator\IdeaProjects\jvmjstat -compiler 10988
Compiled Failed Invalid Time FailedType FailedMethod95 0 0 0.03 0-printcompilation输出已经被JIT编译的方法
C:\Users\Administrator\IdeaProjects\jvmjstat -printcompilation 10988
Compiled Size Type Method95 138 1 java/lang/StringBuffer appendjstat如何判断内存泄漏
①在长时间运行的Java程序中可以运行jstat命令连续获取多行性能数据并取这几行数据中OU列的最小值②每隔一段较长时间重复一次上述操作来获得多组OU(Old Use)最小值如果这些值呈上涨趋势则说明该Java程序的老年代内存使用量不断上涨这意味着无法回收的对象在不断增加因此有可能存在内存泄漏
jifo(Configuration Info for Java)
查看虚拟机配置参数信息也可用于调整虚拟机的配置参数很多情况下Java应用程序不会指定所有的Java虚拟机参数而此时开发人员可能不知道某一个具体的Java虚拟机参数的默认值在这情况下可能需要通过查找文档获取某个参数的默认值查看
//查看由System.getProperties()取得的参数------------jinfo -flags PID
C:\Users\Administrator\IdeaProjects\jvmjinfo -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:CICompilerCount3 -XX:InitialHeapSize62914560 -XX:MaxHeapSize62914560 -XX:MaxNewSize20971520 -XX:MinHeapDeltaBytes524288 -XX:N
ewSize20971520 -XX:OldSize41943040 -XX:SurvivorRatio8 -XX:UseCompressedClassPointers -XX:UseCompressedOops -XX:UseFastUnorderedTimeStamps -XX:-UseLarg
ePagesIndividualAllocation -XX:UseParallelGC
Command line: -Xms60m -Xmx60m -XX:SurvivorRatio8 -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar51523:D:\Program Files\JetBr
ains\IntelliJ IDEA 2019.3.5\bin -Dfile.encodingUTF-8
//-flags查看赋过值的参数------------jinfo -flags PID
C:\Users\Administrator\IdeaProjects\jvmjinfo -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:CICompilerCount3 -XX:InitialHeapSize62914560 -XX:MaxHeapSize62914560 -XX:MaxNewSize20971520 -XX:MinHeapDeltaBytes524288 -XX:N
ewSize20971520 -XX:OldSize41943040 -XX:SurvivorRatio8 -XX:UseCompressedClassPointers -XX:UseCompressedOops -XX:UseFastUnorderedTimeStamps -XX:-UseLarg
ePagesIndividualAllocation -XX:UseParallelGC
Command line: -Xms60m -Xmx60m -XX:SurvivorRatio8 -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar51584:D:\Program Files\JetBr
ains\IntelliJ IDEA 2019.3.5\bin -Dfile.encodingUTF-8
//jinfo -flag 具体参数PID------------jinfo -flag 具体参数 PID
C:\Users\Administrator\IdeaProjects\jvmjinfo -flag SurvivorRatio 13940
-XX:SurvivorRatio8
//UseParrelGC(表示使用-表示未使用)
C:\Users\Administrator\IdeaProjects\jvmjinfo -flag UseParallelGC 5764
-XX:UseParallelGC修改
jinfo不仅可以查看运行时某一个Java虚拟机参数的实际取值甚至可以在运行时修改部分参数使之立即生效并非所有参数都支持动态修改。参数没有被标记为manageable的flag可以被实时修改其实这个修改能力是极其有限的查看被标记为manageable的参数
C:\Users\Administrator\IdeaProjects\jvmjava -XX:PrintFlagsFinal -version a.txt
java version 17.0.11 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.117-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.117-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\jvmjinfo -flag PrintGCDetails 13716
-XX:-PrintGCDetails
C:\Users\Administrator\IdeaProjects\jvmjinfo -flag PrintGCDetails 13716
C:\Users\Administrator\IdeaProjects\jvmjinfo -flag PrintGCDetails 13716
-XX:PrintGCDetails
//------------------------------------------------------------------------
C:\Users\Administrator\IdeaProjects\jvmjinfo -flag MaxHeapFreeRatio 5588
-XX:MaxHeapFreeRatio100
C:\Users\Administrator\IdeaProjects\jvmjinfo -flag MaxHeapFreeRatio90 5588C:\Users\Administrator\IdeaProjects\jvmjinfo -flag MaxHeapFreeRatio 5588
-XX:MaxHeapFreeRatio90拓展
java -XX:PrintFlagsIntial查看所有JVM参数启动的初始值java -XX:PrintFlagsFinal查看所有JVM参数启动的最终值java -XX:PrintCommandLineFlags查看那些已经被用户或JVM设置过的详细的XX参数的名称和值
//PrintCommandLineFlags
-XX:ConcGCThreads2 -XX:G1ConcRefinementThreads6 -XX:GCDrainStackTargetSize64 -XX:InitialHeapSize534181568 -XX:MarkStackSize4194304 -XX:MaxHeapSize8546905088 -XX:MinHeapSize6815736 -XX:PrintCommandLineFlags -XX:ReservedCodeCacheSize251658240 -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}... ...