Java常用命令汇总
JDK 工具命令
jps(Java Virtual Machine Process Status Tool)
命令示例:jps -l
应用场景:列出当前系统中所有Java进程的PID和主类名,常用于快速定位Java应用的进程ID。
javac(Java Compiler)
命令示例:javac Main.java
应用场景:将Java源文件编译为字节码文件(.class文件),是开发过程中最基础的编译工具。
java(Java Application Launcher)
命令示例:java -jar app.jar
应用场景:运行已编译的Java程序或可执行的JAR包,支持设置JVM参数如内存大小(-Xmx
)。
javap(Java Class File Disassembler)
命令示例:javap -c MyClass
应用场景:反编译.class文件,查看字节码指令,用于调试或分析代码逻辑。
jstack(Java Stack Trace)
命令示例:jstack -l <pid>
应用场景:生成Java进程的线程快照,用于分析线程死锁或高CPU占用问题。
jmap(Java Memory Map)
命令示例:jmap -heap <pid>
应用场景:查看Java堆内存使用情况,包括分代内存统计,常用于内存泄漏分析。
jstat(JVM Statistics Monitoring Tool)
命令示例:jstat -gc <pid> 1000 5
应用场景:监控JVM垃圾回收状态,每1秒输出一次,共5次,用于GC性能调优。
jinfo(Java Configuration Info)
命令示例:jinfo -flags <pid>
应用场景:查看或动态修改JVM参数(如-XX:+PrintGCDetails
),适用于运行时调试。
jconsole(Java Monitoring and Management Console)
命令示例:jconsole
应用场景:图形化监控JVM内存、线程、类加载等信息,适合直观分析运行时状态。
jcmd(JVM Diagnostic Command Tool)
命令示例:jcmd <pid> VM.flags
应用场景:多功能诊断工具,可获取JVM属性、线程转储、堆转储等。
应用运行命令
运行普通类文件
命令示例:java -cp .:lib/* com.example.Main
应用场景:指定类路径(含依赖库)启动主类,适用于未打包的非模块化项目。
运行可执行JAR
命令示例:java -Xms512m -Xmx1024m -jar app.jar --spring.profiles.active=prod
应用场景:启动Spring Boot等打包应用,设置堆内存大小和激活生产环境配置。
动态附加代理
命令示例:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar
应用场景:启用远程调试端口(5005),供IDE连接进行调试。
模块化应用运行
命令示例:java --module-path mods -m com.module/com.module.Main
应用场景:运行JPMS模块化应用,需指定模块路径和主模块。
性能分析启动
命令示例:java -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr -jar app.jar
应用场景:启用Java Flight Recorder进行性能分析记录,生成JFR文件供后续分析。
系统属性传递
命令示例:java -Dlog4j.configurationFile=/path/to/log4j2.xml -Duser.timezone=GMT+8 -jar app.jar
应用场景:设置日志配置文件和时区等系统属性。
典型组合场景
内存泄漏分析
jmap -dump:live,format=b,file=heap.hprof <pid> jstack <pid> > thread_dump.txt
生成堆转储和线程转储,结合MAT工具分析。
GC调优监控
jstat -gcutil <pid> 1s java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar app.jar
实时监控GC状态并调整G1垃圾回收器参数。