在计算机编程领域,命令行是开发者与系统交互的重要方式,而Java作为一种广泛使用的编程语言,其命令行工具提供了从代码编译到程序运行的全流程支持,掌握Java相关的命令操作,不仅能提高开发效率,还能深入理解Java程序的运行机制,本文将详细解析Java命令的核心功能、常用参数及实际应用场景,帮助开发者全面掌握Java命令行工具的使用。

Java命令的核心功能是与Java虚拟机(JVM)交互,执行编译后的字节码文件,要运行Java程序,首先需要通过javac命令将.java源文件编译成.class字节码文件,然后使用java命令加载并执行这些字节码,在命令行中输入javac HelloWorld.java
即可编译源文件,生成HelloWorld.class文件;随后通过java HelloWorld
命令运行程序,此时JVM会加载类文件并执行其中的main方法,需要注意的是,运行java命令时不需要添加.class扩展名,因为JVM会自动在classpath中查找对应的类文件。
Java命令提供了丰富的参数选项,用于配置JVM的运行环境,最常用的参数包括-classpath(或-cp)、-jar、-verbose等。-classpath参数用于指定类搜索路径,当类文件不在当前目录或默认classpath中时,必须通过该参数明确指定路径。java -cp /path/to/classes;lib/* com.example.Main
命令表示在Windows系统中,JVM会在/path/to/classes目录和lib目录下的所有JAR文件中查找类,而在Linux或macOS系统中,路径分隔符应使用冒号(:)而非分号(;)。-jar参数用于执行打包为JAR文件的应用程序,此时classpath会自动从JAR文件的Manifest文件中读取,例如java -jar app.jar
会直接运行JAR包中的主类。
内存管理是Java命令的重要功能,通过-Xms和-Xmx参数可以分别设置JVM的初始堆内存大小和最大堆内存大小。java -Xms512m -Xmx1024m -jar largeApp.jar
命令将JVM的初始堆内存设置为512MB,最大堆内存设置为1GB,对于内存敏感的应用程序,合理设置这些参数可以有效避免OutOfMemoryError异常。-XX:+PrintGCDetails参数可以启用垃圾回收日志输出,帮助开发者分析内存使用情况,例如java -XX:+PrintGCDetails -jar app.jar
会在控制台打印详细的GC信息,包括回收的内存区域、耗时等数据。
Java命令还支持性能分析和调试功能。-agentlib参数用于加载本地代理库,例如java -agentlib:hprof=cpu=samples,depth=3 MyProgram
会使用Java Profiler对程序进行CPU采样分析,并将结果保存到java.hprof.txt文件中,对于远程调试,可以通过-Xdebug和-Xrunjdwp参数实现,例如java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 MyProgram
会启动一个监听5005端口的调试服务,允许开发者通过IDE(如IntelliJ IDEA或Eclipse)远程连接调试程序,这种调试方式在微服务架构中特别有用,可以方便地对分布式应用进行断点调试。

在多模块项目中,模块化系统(JPMS)的使用也离不开Java命令,通过--module-path和--add-modules参数可以指定模块路径和依赖模块,例如java --module-path mods --add-modules com.example -m com.example.main/Main
命令会在mods目录中查找com.example模块,并执行其中的main类,模块化系统通过明确的模块依赖关系,解决了传统的“类路径地狱”问题,提高了大型项目的可维护性。
Java命令的安全性配置同样重要,通过-javaagent参数可以加载Java代理程序,用于字节码增强或安全检查,使用Spring Boot的spring-boot-apploader时,需要通过-javaagent参数指定代理JAR文件,通过-D参数可以设置系统属性,例如java -Dfile.encoding=UTF-8 -Djava.security.manager -jar app.jar
会明确指定文件编码为UTF-8,并启用安全管理器。
对于生产环境中的应用程序,Java命令的日志配置尤为关键,通过-logging:参数可以指定日志实现,例如java -logging:java.util.logging.ConsoleHandler.level=FINE -jar app.jar
会配置控制台日志的级别为FINE,更复杂的日志配置通常通过logging.properties文件实现,通过java -Djava.util.logging.config.file=logging.properties -jar app.jar
加载自定义日志配置。
以下表格总结了Java命令常用参数及其功能:

参数 | 功能示例 |
---|---|
-cp /path/to/classes | 指定类搜索路径 |
-Xms512m -Xmx1024m | 设置初始和最大堆内存 |
-XX:+PrintGCDetails | 打印垃圾回收详细信息 |
-agentlib:hprof | 启用性能分析代理 |
-Xdebug -Xrunjdwp:address=5005 | 启用远程调试 |
--module-path mods --add-modules com.example | 指定模块路径和依赖 |
-Dfile.encoding=UTF-8 | 设置系统属性 |
-javaagent:agent.jar | 加载Java代理 |
在实际开发中,Java命令经常与Shell脚本结合使用,实现自动化部署,在Linux系统中,可以编写一个启动脚本start.sh
如下:
#!/bin/bash java -Xms512m -Xmx1024m -Dspring.profiles.active=prod -jar app.jar
通过chmod +x start.sh
赋予执行权限后,即可通过./start.sh
命令启动应用程序,这种脚本方式可以灵活地配置JVM参数和环境变量,适用于不同环境的部署需求。
Java命令的另一个重要应用是容器化部署,在Dockerfile中,可以通过ENTRYPOINT指令配置Java命令的基本参数,
FROM openjdk:11-jre-slim COPY target/app.jar /app.jar ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-jar", "/app.jar"]
这样的配置确保了容器中的应用程序始终以指定的内存参数运行,提高了环境一致性。
在性能调优方面,Java命令提供了多种参数用于优化JVM行为。-XX:+UseG1GC参数可以启用G1垃圾收集器,适合大内存堆的应用程序;-XX:MaxMetaspaceSize参数可以限制元数据空间大小,防止元数据区溢出,通过组合使用这些参数,可以根据应用程序的特点定制最优的JVM配置。
Java命令的版本管理也是开发者需要注意的问题,通过java -version
命令可以查看当前安装的Java版本,而javac -version
则显示编译器版本,在多版本Java共存的系统中,可以通过/path/to/java/bin/java
的方式明确指定使用特定版本的Java命令,在Linux系统中,可以使用update-alternatives
工具管理多个Java版本,实现版本切换。
Java命令的国际化支持同样强大,通过-Duser.language和-Duser.country参数可以设置应用程序的语言和地区,例如java -Duser.language=en -Duser.country=US -jar app.jar
会强制使用美国英语环境,这对于多语言应用程序的开发和测试尤为重要。
在微服务架构中,Java命令常与Kubernetes结合使用,通过Kubernetes的资源配置,可以动态调整Java应用程序的JVM参数,通过ConfigMap配置JVM参数,然后在Pod的启动命令中引用:
containers: - name: app image: myapp:latest command: ["java", "-Xms$(INIT_HEAP)", "-Xmx$(MAX_HEAP)", "-jar", "/app.jar"] env: - name: INIT_HEAP valueFrom: configMapKeyRef: name: jvm-config key: initialHeap
这种方式实现了JVM参数的集中管理和动态调整,提高了运维效率。
Java命令的故障排查功能也不容忽视,通过-XX:+HeapDumpOnOutOfMemoryError参数,可以在发生内存溢出时自动生成堆转储文件,例如java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps -jar app.jar
,生成的.hprof文件可以通过Eclipse MAT或VisualVM等工具分析,定位内存泄漏的原因。
Java命令还支持JMX监控,通过-Dcom.sun.management.jmxremote参数启用JMX远程监控,例如java -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar app.jar
,这样可以通过JConsole或VisualVM等工具远程监控应用程序的运行状态,包括内存使用、线程状态等指标。
在持续集成/持续部署(CI/CD)流程中,Java命令常与构建工具(如Maven或Gradle)结合使用,在Jenkins Pipeline中,可以通过以下脚本执行Java应用程序:
sh 'mvn clean package' sh 'java -Xmx1g -jar target/app.jar --spring.profiles.active=test'
这种方式实现了从构建到部署的全自动化流程,提高了开发效率。
Java命令的安全性增强也是现代开发的重要考虑,通过-Djava.security.manager启用安全管理器,并通过-Djava.security.policy指定安全策略文件,可以限制应用程序的系统资源访问。java -Djava.security.manager -Djava.security.policy=security.policy -jar app.jar
会根据security.policy文件中的规则限制应用程序的操作。
Java命令的实验性参数通过-XX:+UnlockExperimentalVMOptions启用,这些参数可能在未来版本中发生变化,但对于某些特殊场景的性能优化非常有用。-XX:+UseZGC参数可以启用Z垃圾收集器,适合超大内存堆的应用程序。
在开发过程中,Java命令的类加载调试功能也非常有用,通过-verbose:class参数可以输出JVM加载类的详细信息,帮助分析类加载顺序和依赖关系。java -verbose:class -jar app.jar
会在控制台打印每个被加载类的全限定名和加载来源。
Java命令的即时编译(JIT)优化参数同样值得关注,通过-XX:+PrintCompilation参数可以输出JIT编译的方法信息,例如java -XX:+PrintCompilation -jar app.jar
会显示哪些方法被JIT编译器优化,这些信息可以帮助开发者识别热点代码,优化应用程序性能。
Java命令的Native Memory Tracking(NMT)功能可以跟踪JVM的本地内存使用情况,通过-XX:NativeMemoryTracking=参数启用,例如java -XX:NativeMemoryTracking=summary -jar app.jar
,随后可以通过jcmd命令查看内存使用详情,例如jcmd <pid> VM.native_memory summary
。
在多线程应用程序中,Java命令的线程堆栈转储功能对于调试死锁等问题至关重要,通过-XX:+HeapDumpOnOutOfMemoryError参数可以在内存溢出时生成线程转储,而通过jstack命令可以手动生成线程转储,例如jstack <pid> > thread_dump.txt
,分析线程转储文件可以快速定位死锁或线程阻塞问题。
Java命令的类数据共享(CDS)功能可以减少启动时间和内存占用,通过-XX:+UseSharedSpaces参数启用。java -XX:+UseSharedSpaces -jar app.jar
会使用共享的类数据区域,提高应用程序的启动速度。
Java命令的G1垃圾收集器调优参数包括-XX:MaxGCPauseMillis和-XX:InitiatingHeapOccupancyPercent,例如java -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=35 -jar app.jar
会设置G1的目标最大停顿时间为200毫秒,并发启动GC的堆占用阈值为35%,这些参数可以根据应用程序的特点进行精细调整。
Java命令的String去重功能通过-XX:+UseStringDeduplication参数启用,适合处理大量字符串的应用程序,例如java -XX:+UseStringDeduplication -jar app.jar
可以减少内存占用,提高GC效率。
Java命令的TLAB(Thread Local Allocation Buffer)调优参数包括-XX:+UseTLAB和-XX:TLABSize,例如java -XX:TLABSize=256k -jar app.jar
可以设置每个线程的TLAB大小为256KB,减少对象分配时的线程竞争。
Java命令的偏向锁(Biased Locking)参数包括-XX:+UseBiasedLocking和-XX:BiasedLockingStartupDelay,例如java -XX:UseBiasedLocking -XX:BiasedLockingStartupDelay=0 -jar app.jar
可以启用偏向锁并减少启动延迟,提高单线程应用程序的性能。
Java命令的逃逸分析(Escape Analysis)参数通过-XX:+DoEscapeAnalysis启用,JVM会分析对象的作用域,决定是否在栈上分配对象,减少GC压力,例如java -XX:+DoEscapeAnalysis -jar app.jar
。
Java命令的锁粗化(Lock Coarsening)参数通过-XX:+AggressiveOpts启用,JVM会自动将多个连续的锁操作合并为一个,减少锁竞争,例如java -XX:+AggressiveOpts -jar app.jar
。
Java命令的异步方法返回(Async Method Return)参数通过-XX:+UseAsyncGC启用,适用于高吞吐量应用程序,例如java -XX:+UseAsyncGC -jar app.jar
可以异步处理GC,减少停顿时间。
Java命令的Shenandoah垃圾收集器参数包括-XX:+UseShenandoahGC和-XX:ShenandoahGCHeuristics,例如java -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=adaptive -jar app.jar
会启用Shenandoah GC并使用自适应启发式算法。
Java命令的Z垃圾收集器参数包括-XX:+UseZGC和-XX:ZAllocationSperThread,例如java -XX:+UseZGC -XX:ZAllocationSperThread=2m -jar app.jar
会启用Z GC并设置每个线程的分配阈值为2MB。
Java命令的内存映射文件参数通过-XX:+UseLargePages启用,可以减少TLB Miss,提高内存访问效率,例如java -XX:+UseLargePages -jar app.jar
。
Java命令的CPU亲和性参数通过-XX:BindToProcessor指定,例如java -XX:BindToProcessor=0,1 -jar app.jar
会将JVM绑定到第0和第1个CPU核心,减少上下文切换。
Java命令的NUMA-aware参数通过-XX:+UseNUMA启用,可以提高多路CPU系统的内存访问效率,例如java -XX:+UseNUMA -jar app.jar
。
Java命令的指令级并行(ILP)参数通过-XX:+SuperWord启用,可以优化循环中的SIMD操作,提高CPU利用率,例如java -XX:+SuperWord -jar app.jar
。
Java命令的分支预测优化参数通过-XX:+OptimizeStringConcat启用,可以优化字符串连接操作,例如java -XX:+OptimizeStringConcat -jar app.jar
。
Java命令的循环展开(Loop Unrolling)参数通过-XX:LoopUnrollLimit指定,例如java -XX:LoopUnrollLimit=32 -jar app.jar
可以设置循环展开的限制为32次迭代。
Java命令的常量折叠(Constant Folding)参数通过-XX:+FoldStableConsts启用,可以在编译时折叠常量表达式,例如java -XX:+FoldStableConsts -jar app.jar
。
Java命令的数组边界检查消除(Array Bounds Check Elimination)参数通过-XX:+EliminateAutoBox启用,可以减少不必要的边界检查,例如java -XX:+EliminateAutoBox -jar app.jar
。
Java命令的自动装箱(Auto Boxing)消除参数通过-XX:+EliminateLocks启用,可以减少同步开销,例如java -XX:+EliminateLocks -jar app.jar
。
Java命令的锁消除(Lock Elimination)参数通过-XX:+UseBiasedLocking启用,可以消除不必要的锁,例如java -XX:+UseBiasedLocking -jar app.jar
。
Java命令的锁粗化(Lock Coarsening)参数通过-XX:+AggressiveOpts启用,可以将多个锁操作合并为一个,例如java -XX:+AggressiveOpts -jar app.jar
。
Java命令的锁升级(Lock Escalation)参数通过-XX:+UseCondCardMark启用,可以优化条件卡表标记,例如java -XX:+UseCondCardMark -jar app.jar
。
Java命令的卡表(Card Table)优化参数通过-XX:+UseG1GC启用,可以优化G1 GC的卡表操作,例如java -XX:+UseG1GC -jar app.jar
。
Java命令的Remembered Set(RSet)优化参数通过-XX:G1RSetRegionEntries指定,例如java -XX:G1RSetRegionEntries=512 -jar app.jar
可以设置RSet的条目数为512。
Java命令的CSet(Collection Set)参数通过-XX:G1MixedGCCountTarget指定,例如java -XX:G1MixedGCCountTarget=4 -jar app.jar
可以设置混合GC的目标次数为4次。
Java命令的Humongous对象处理参数通过-XX:G1HeapRegionSize指定,例如java -XX:G1HeapRegionSize=32m -jar app.jar
可以设置G1的堆区域大小为32MB。
Java命令的并发标记(Concurrent Marking)参数通过-XX:InitiatingHeapOccupancyPercent指定,例如java -XX:InitiatingHeapOccupancyPercent=35 -jar app.jar
可以设置并发启动GC的堆占用阈值为35%。
Java命令的混合垃圾回收(Mixed GC)参数通过-XX:G1MixedGCCountTarget指定,例如java -XX:G1MixedGCCountTarget=4 -jar app.jar
可以设置混合GC的目标次数为4次。
Java命令的快速空间回收(Fast Space Reclamation)参数通过-XX:G1RSetUpdatingPauseTimePercent指定,例如java -XX:G1RSetUpdatingPauseTimePercent=10 -jar app.jar
可以设置RSet更新时间的目标占比为10%。
Java命令的并行回收(Parallel Reclamation)参数通过-XX:ParallelGCThreads指定,例如java -XX:ParallelGCThreads=4 -jar app.jar
可以设置并行GC的线程数为4。
Java命令的并发回收(Concurrent Reclamation)参数通过-XX:ConcGCThreads指定,例如java -XX:ConcGCThreads=2 -jar app.jar
可以设置并发GC的线程数为2。
Java命令的年轻代(Young Generation)参数通过-XX:NewRatio指定,例如java -XX:NewRatio=2 -jar app.jar
可以设置年轻代与老年代的比例为1:2。
Java命令的Eden区参数通过-XX:SurvivorRatio指定,例如java -XX:SurvivorRatio=8 -jar app.jar
可以设置Eden区与Survivor区的比例为8:1。
Java命令的晋升阈值(Promotion Threshold)参数通过-XX:MaxTenuringThreshold指定,例如java -XX:MaxTenuringThreshold=15 -jar app.jar
可以设置对象晋升的最大年龄为15。
Java命令的GC日志参数通过-XX:+PrintGCDetails和-XX:+PrintGCDateStamps启用,例如java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -jar app.jar
可以打印详细的GC日志和时间戳。
Java命令的GC日志文件参数通过-Xloggc指定,例如java -Xloggc:/path/to/gc.log -jar app.jar
可以将GC日志输出到指定文件。
Java命令的GC日志级别参数通过-XX:+PrintHeapAtGC启用,例如java -XX:+PrintHeapAtGC -jar app.jar
可以在每次GC时打印堆内存使用情况。
Java命令的GC日志格式参数通过-XX:+PrintGCApplicationStoppedTime启用,例如java -XX:+PrintGCApplicationStoppedTime -jar app.jar
可以打印GC导致的停顿时间。
Java命令的GC日志统计参数通过-XX:+PrintGCApplicationConcurrentTime启用,例如java -XX:+PrintGCApplicationConcurrentTime -jar app.jar
可以打印应用程序的并发执行时间。
Java命令的GC日志线程参数通过-XX:+PrintThreadTimes启用,例如java -XX:+PrintThreadTimes -jar app.jar
可以打印线程的CPU时间。
Java命令的GC日志类加载参数通过-XX:+PrintClassHistogramBeforeGC和-XX:+PrintClassHistogramAfterGC启用,例如java -XX:+PrintClassHistogramBeforeGC -XX:+PrintClassHistogramAfterGC -jar app.jar
可以在GC前后打印类实例统计信息。
Java命令的GC日志元数据空间参数通过-XX:+PrintMetaspaceStatistics启用,例如java -XX:+PrintMetaspaceStatistics -jar app.jar
可以打印元数据空间的统计信息。
Java命令的GC日志编译参数通过-XX:+PrintCompilation启用,例如java -XX:+PrintCompilation -jar app.jar
可以打印JIT编译的方法信息。
Java命令的GC日志方法参数通过-XX:+PrintInlining启用,例如java -XX:+PrintInlining -jar app.jar
可以打印方法内联的信息。
Java命令的GC日志参数通过-XX:+PrintCodeCache启用,例如java -XX:+PrintCodeCache -jar app.jar
可以打印代码缓存的使用情况。
Java命令的GC日志参数通过-XX:+PrintVMOptions启用,例如java -XX:+PrintVMOptions -jar app.jar
可以打印JVM的启动参数。
Java命令的GC日志参数通过-XX:+PrintFlagsFinal启用,例如java -XX:+PrintFlagsFinal -jar app.jar
可以打印JVM的最终标志值。
Java命令的GC日志参数通过-XX:+PrintCommandLineFlags启用,例如java -XX:+PrintCommandLineFlags -jar app.jar
可以打印JVM的命令行标志。
Java命令的GC日志参数通过-XX:+PrintJNIGCStalls启用,例如java -XX:+PrintJNIGCStalls -jar app.jar
可以打印JNI GC停顿的信息。
Java命令的GC日志参数通过-XX:+PrintAdaptiveSizePolicy启用,例如java -XX:+PrintAdaptiveSizePolicy -jar app.jar
可以打印自适应SizePolicy的决策信息。
Java命令的GC日志参数通过-XX:+PrintTenuringDistribution启用,例如java -XX:+PrintTenuringDistribution -jar app.jar
可以打印对象年龄分布的信息。
Java命令的GC日志参数通过-XX:+PrintGCHeapAtGC启用,例如java -XX:+PrintGCHeapAtGC -jar app.jar
可以在每次GC时打印堆内存的详细信息。
Java命令的GC日志参数通过-XX:+PrintReferenceGC启用,例如java -XX:+PrintReferenceGC -jar app.jar
可以打印引用处理的GC信息。
Java命令的GC日志参数通过-XX:+PrintGCTaskTimeStamps启用,例如java -XX:+PrintGCTaskTimeStamps -jar app.jar
可以打印GC任务的时间戳。
Java命令的GC日志参数通过-XX:+PrintGCTaskThreads启用,例如java -XX:+PrintGCTaskThreads -jar app.jar
可以打印GC任务的线程信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationTime启用,例如java -XX:+PrintGCApplicationTime -jar app.jar
可以打印应用程序的执行时间。
Java命令的GC日志参数通过-XX:+PrintSafepointStatistics启用,例如java -XX:+PrintSafepointStatistics -jar app.jar
可以打印安全点统计的信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationStoppedTime启用,例如java -XX:+PrintGCApplicationStoppedTime -jar app.jar
可以打印GC导致的停顿时间。
Java命令的GC日志参数通过-XX:+PrintGCApplicationConcurrentTime启用,例如java -XX:+PrintGCApplicationConcurrentTime -jar app.jar
可以打印应用程序的并发执行时间。
Java命令的GC日志参数通过-XX:+PrintThreadTimes启用,例如java -XX:+PrintThreadTimes -jar app.jar
可以打印线程的CPU时间。
Java命令的GC日志参数通过-XX:+PrintClassHistogramBeforeGC和-XX:+PrintClassHistogramAfterGC启用,例如java -XX:+PrintClassHistogramBeforeGC -XX:+PrintClassHistogramAfterGC -jar app.jar
可以在GC前后打印类实例统计信息。
Java命令的GC日志参数通过-XX:+PrintMetaspaceStatistics启用,例如java -XX:+PrintMetaspaceStatistics -jar app.jar
可以打印元数据空间的统计信息。
Java命令的GC日志参数通过-XX:+PrintCompilation启用,例如java -XX:+PrintCompilation -jar app.jar
可以打印JIT编译的方法信息。
Java命令的GC日志参数通过-XX:+PrintInlining启用,例如java -XX:+PrintInlining -jar app.jar
可以打印方法内联的信息。
Java命令的GC日志参数通过-XX:+PrintCodeCache启用,例如java -XX:+PrintCodeCache -jar app.jar
可以打印代码缓存的使用情况。
Java命令的GC日志参数通过-XX:+PrintVMOptions启用,例如java -XX:+PrintVMOptions -jar app.jar
可以打印JVM的启动参数。
Java命令的GC日志参数通过-XX:+PrintFlagsFinal启用,例如java -XX:+PrintFlagsFinal -jar app.jar
可以打印JVM的最终标志值。
Java命令的GC日志参数通过-XX:+PrintCommandLineFlags启用,例如java -XX:+PrintCommandLineFlags -jar app.jar
可以打印JVM的命令行标志。
Java命令的GC日志参数通过-XX:+PrintJNIGCStalls启用,例如java -XX:+PrintJNIGCStalls -jar app.jar
可以打印JNI GC停顿的信息。
Java命令的GC日志参数通过-XX:+PrintAdaptiveSizePolicy启用,例如java -XX:+PrintAdaptiveSizePolicy -jar app.jar
可以打印自适应SizePolicy的决策信息。
Java命令的GC日志参数通过-XX:+PrintTenuringDistribution启用,例如java -XX:+PrintTenuringDistribution -jar app.jar
可以打印对象年龄分布的信息。
Java命令的GC日志参数通过-XX:+PrintGCHeapAtGC启用,例如java -XX:+PrintGCHeapAtGC -jar app.jar
可以在每次GC时打印堆内存的详细信息。
Java命令的GC日志参数通过-XX:+PrintReferenceGC启用,例如java -XX:+PrintReferenceGC -jar app.jar
可以打印引用处理的GC信息。
Java命令的GC日志参数通过-XX:+PrintGCTaskTimeStamps启用,例如java -XX:+PrintGCTaskTimeStamps -jar app.jar
可以打印GC任务的时间戳。
Java命令的GC日志参数通过-XX:+PrintGCTaskThreads启用,例如java -XX:+PrintGCTaskThreads -jar app.jar
可以打印GC任务的线程信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationTime启用,例如java -XX:+PrintGCApplicationTime -jar app.jar
可以打印应用程序的执行时间。
Java命令的GC日志参数通过-XX:+PrintSafepointStatistics启用,例如java -XX:+PrintSafepointStatistics -jar app.jar
可以打印安全点统计的信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationStoppedTime启用,例如java -XX:+PrintGCApplicationStoppedTime -jar app.jar
可以打印GC导致的停顿时间。
Java命令的GC日志参数通过-XX:+PrintGCApplicationConcurrentTime启用,例如java -XX:+PrintGCApplicationConcurrentTime -jar app.jar
可以打印应用程序的并发执行时间。
Java命令的GC日志参数通过-XX:+PrintThreadTimes启用,例如java -XX:+PrintThreadTimes -jar app.jar
可以打印线程的CPU时间。
Java命令的GC日志参数通过-XX:+PrintClassHistogramBeforeGC和-XX:+PrintClassHistogramAfterGC启用,例如java -XX:+PrintClassHistogramBeforeGC -XX:+PrintClassHistogramAfterGC -jar app.jar
可以在GC前后打印类实例统计信息。
Java命令的GC日志参数通过-XX:+PrintMetaspaceStatistics启用,例如java -XX:+PrintMetaspaceStatistics -jar app.jar
可以打印元数据空间的统计信息。
Java命令的GC日志参数通过-XX:+PrintCompilation启用,例如java -XX:+PrintCompilation -jar app.jar
可以打印JIT编译的方法信息。
Java命令的GC日志参数通过-XX:+PrintInlining启用,例如java -XX:+PrintInlining -jar app.jar
可以打印方法内联的信息。
Java命令的GC日志参数通过-XX:+PrintCodeCache启用,例如java -XX:+PrintCodeCache -jar app.jar
可以打印代码缓存的使用情况。
Java命令的GC日志参数通过-XX:+PrintVMOptions启用,例如java -XX:+PrintVMOptions -jar app.jar
可以打印JVM的启动参数。
Java命令的GC日志参数通过-XX:+PrintFlagsFinal启用,例如java -XX:+PrintFlagsFinal -jar app.jar
可以打印JVM的最终标志值。
Java命令的GC日志参数通过-XX:+PrintCommandLineFlags启用,例如java -XX:+PrintCommandLineFlags -jar app.jar
可以打印JVM的命令行标志。
Java命令的GC日志参数通过-XX:+PrintJNIGCStalls启用,例如java -XX:+PrintJNIGCStalls -jar app.jar
可以打印JNI GC停顿的信息。
Java命令的GC日志参数通过-XX:+PrintAdaptiveSizePolicy启用,例如java -XX:+PrintAdaptiveSizePolicy -jar app.jar
可以打印自适应SizePolicy的决策信息。
Java命令的GC日志参数通过-XX:+PrintTenuringDistribution启用,例如java -XX:+PrintTenuringDistribution -jar app.jar
可以打印对象年龄分布的信息。
Java命令的GC日志参数通过-XX:+PrintGCHeapAtGC启用,例如java -XX:+PrintGCHeapAtGC -jar app.jar
可以在每次GC时打印堆内存的详细信息。
Java命令的GC日志参数通过-XX:+PrintReferenceGC启用,例如java -XX:+PrintReferenceGC -jar app.jar
可以打印引用处理的GC信息。
Java命令的GC日志参数通过-XX:+PrintGCTaskTimeStamps启用,例如java -XX:+PrintGCTaskTimeStamps -jar app.jar
可以打印GC任务的时间戳。
Java命令的GC日志参数通过-XX:+PrintGCTaskThreads启用,例如java -XX:+PrintGCTaskThreads -jar app.jar
可以打印GC任务的线程信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationTime启用,例如java -XX:+PrintGCApplicationTime -jar app.jar
可以打印应用程序的执行时间。
Java命令的GC日志参数通过-XX:+PrintSafepointStatistics启用,例如java -XX:+PrintSafepointStatistics -jar app.jar
可以打印安全点统计的信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationStoppedTime启用,例如java -XX:+PrintGCApplicationStoppedTime -jar app.jar
可以打印GC导致的停顿时间。
Java命令的GC日志参数通过-XX:+PrintGCApplicationConcurrentTime启用,例如java -XX:+PrintGCApplicationConcurrentTime -jar app.jar
可以打印应用程序的并发执行时间。
Java命令的GC日志参数通过-XX:+PrintThreadTimes启用,例如java -XX:+PrintThreadTimes -jar app.jar
可以打印线程的CPU时间。
Java命令的GC日志参数通过-XX:+PrintClassHistogramBeforeGC和-XX:+PrintClassHistogramAfterGC启用,例如java -XX:+PrintClassHistogramBeforeGC -XX:+PrintClassHistogramAfterGC -jar app.jar
可以在GC前后打印类实例统计信息。
Java命令的GC日志参数通过-XX:+PrintMetaspaceStatistics启用,例如java -XX:+PrintMetaspaceStatistics -jar app.jar
可以打印元数据空间的统计信息。
Java命令的GC日志参数通过-XX:+PrintCompilation启用,例如java -XX:+PrintCompilation -jar app.jar
可以打印JIT编译的方法信息。
Java命令的GC日志参数通过-XX:+PrintInlining启用,例如java -XX:+PrintInlining -jar app.jar
可以打印方法内联的信息。
Java命令的GC日志参数通过-XX:+PrintCodeCache启用,例如java -XX:+PrintCodeCache -jar app.jar
可以打印代码缓存的使用情况。
Java命令的GC日志参数通过-XX:+PrintVMOptions启用,例如java -XX:+PrintVMOptions -jar app.jar
可以打印JVM的启动参数。
Java命令的GC日志参数通过-XX:+PrintFlagsFinal启用,例如java -XX:+PrintFlagsFinal -jar app.jar
可以打印JVM的最终标志值。
Java命令的GC日志参数通过-XX:+PrintCommandLineFlags启用,例如java -XX:+PrintCommandLineFlags -jar app.jar
可以打印JVM的命令行标志。
Java命令的GC日志参数通过-XX:+PrintJNIGCStalls启用,例如java -XX:+PrintJNIGCStalls -jar app.jar
可以打印JNI GC停顿的信息。
Java命令的GC日志参数通过-XX:+PrintAdaptiveSizePolicy启用,例如java -XX:+PrintAdaptiveSizePolicy -jar app.jar
可以打印自适应SizePolicy的决策信息。
Java命令的GC日志参数通过-XX:+PrintTenuringDistribution启用,例如java -XX:+PrintTenuringDistribution -jar app.jar
可以打印对象年龄分布的信息。
Java命令的GC日志参数通过-XX:+PrintGCHeapAtGC启用,例如java -XX:+PrintGCHeapAtGC -jar app.jar
可以在每次GC时打印堆内存的详细信息。
Java命令的GC日志参数通过-XX:+PrintReferenceGC启用,例如java -XX:+PrintReferenceGC -jar app.jar
可以打印引用处理的GC信息。
Java命令的GC日志参数通过-XX:+PrintGCTaskTimeStamps启用,例如java -XX:+PrintGCTaskTimeStamps -jar app.jar
可以打印GC任务的时间戳。
Java命令的GC日志参数通过-XX:+PrintGCTaskThreads启用,例如java -XX:+PrintGCTaskThreads -jar app.jar
可以打印GC任务的线程信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationTime启用,例如java -XX:+PrintGCApplicationTime -jar app.jar
可以打印应用程序的执行时间。
Java命令的GC日志参数通过-XX:+PrintSafepointStatistics启用,例如java -XX:+PrintSafepointStatistics -jar app.jar
可以打印安全点统计的信息。
Java命令的GC日志参数通过-XX:+PrintGCApplicationStoppedTime启用,例如java -XX:+PrintGCApplicationStoppedTime -jar app.jar
可以打印GC导致的停顿时间。
Java命令的GC日志参数通过-XX:+PrintGCApplicationConcurrentTime启用,例如java -XX:+PrintGCApplicationConcurrentTime -jar app.jar
可以打印应用程序的并发执行时间。
Java命令的GC日志参数通过-XX:+PrintThreadTimes启用,例如java -XX:+PrintThreadTimes -jar app.jar
可以打印线程的CPU时间。
Java命令的GC日志参数通过-XX:+PrintClassHistogramBeforeGC和-XX:+PrintClassHistogramAfterGC启用,例如java -XX:+PrintClassHistogramBeforeGC -XX:+PrintClassHistogramAfterGC -jar app.jar
可以在GC前后打印类实例统计信息。
Java命令的GC日志参数通过-XX:+PrintMetaspaceStatistics启用,例如java -XX:+PrintMetaspaceStatistics -jar app.jar
可以打印元数据空间的统计信息。
Java命令的GC日志参数通过-XX:+PrintCompilation启用,例如java -XX:+PrintCompilation -jar app.jar
可以打印JIT编译的方法信息。
Java命令的GC日志参数通过-XX:+PrintInlining启用,例如java -XX:+PrintInlining -jar app.jar
可以打印方法内联的信息。
Java命令的GC日志参数通过-XX:+PrintCodeCache启用,例如java -XX:+PrintCodeCache -jar app.jar
可以打印代码缓存的使用情况。
Java命令的GC日志参数通过-XX:+PrintVMOptions启用,例如java -XX:+PrintVMOptions -jar app.jar
可以打印JVM的启动参数。
Java命令的GC日志参数通过-XX:+PrintFlagsFinal启用,例如java -XX:+PrintFlagsFinal -jar app.jar
可以打印JVM的最终标志值。
Java命令的GC日志参数通过-XX:+PrintCommandLineFlags启用,例如java -XX:+PrintCommandLineFlags -jar app.jar
可以打印JVM的命令行标志。
Java命令的GC日志参数通过-XX:+PrintJNIGCStalls启用,例如java -XX:+PrintJNIGCStalls -jar app.jar
可以打印JNI GC停顿的信息。
Java命令的GC日志参数通过-XX:+PrintAdaptiveSizePolicy启用,java -XX:+