1.编译
javac 编译 .java源文件。
javah 产生相关的 JNI header file
2.运行
java 执行 .class、.jar 文件,命令行窗口运行。
javaw 执行 .class、.jar 文件,非命令行窗口运行。
3.监控排障
3.1 jps
//输出java线程的完整启动参数
jps -mlv
3.2 jstat
//每隔1000毫秒输出一次gc信息,共输出3次
jstat -gc pid 1000 3
格式大概见下:
S0C | S1C | S0U | S1U | EC | EU | OC | OU | PC | PU | YGC | YGCT | FGC | FGCT | GCT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8640.0 | 8640.0 | 3506.2 | 0.0 | 69248.0 | 67912.8 | 173036.0 | 99390.5 | 73856.0 | 73850.1 | 752 | 7.018 | 14 | 5.020 | 12.038 |
survivor_0 capacity (KB) | survivor_1 capacity | survivor_0 usage | survivor_1 usage | eden capacity | eden usage | old capacity | old usage | permanent capacity | permanent usage | young gc count | yong gc time cost | full gc count | full gc time cost | gc time cost |
//关注内存占用百分比
jstat -gcutil pid
格式大概见下:
数值表示占比(x%)
S0 | S1 | E | O | P | YGC | YGCT | FGC | FGCT | GCT |
---|---|---|---|---|---|---|---|---|---|
0.00 | 35.47 | 42.63 | 57.44 | 99.99 | 753 | 7.025 | 14 | 5.020 | 12.045 |
3.3 jmap
//将pid=9406这个java进程的堆,dump到heapDump.hprof文件中。live表示只输出存活对象的信息
jmap -dump:live,format=b,file=heapDump.hprof 9406
3.4 jstack
jstack pid
可以查看当前时刻所有的线程调用堆栈及线程状态。 jstack pid > threadDump.file
将结果保存到文件中去。