04、JDK 常用的基本工具

  • (编译、执行、打 jar 包、生成 API、Java 调试器、Java 反汇编器)

1、编译 - javac

  • Javac: Java 源程序编译器,将 Java 源代码转换成字节码。
    • javac -cp ./libs/slf4j-api-1.7.25.jar;./libs/logback-core-1.2.3.jar;./libs/logback-classic-1.2.3.jar -d ./class-out -encoding utf8 ./src/com/zhangxy/.java ./src/com/zhangxy/bean/.java ./src/com/zhangxy/tool/*.java
      • -d:指定存放生成的 class 文件路径
      • -s:指定需要编译的 java 文件或所在路径
      • -encoding:指定 java 文件使用的字符编码。一般都会指定 utf-8 编码,否则输出的中文是乱码。
      • -cp:是 -classpath 的缩写。指定编译依赖的 class 文件所在的 classpath 路径、jar、zip。多个路径、jar、zip 使用分号(;)分隔。

2、执行 - java

  • Java: Java 解释器,直接从字节码文件,又称为类文件.执行 Java 应用程序的字节代码。
    • java** -cp ./class-out;./libs/slf4j-api-1.7.25.jar;./libs/logback-core-1.2.3.jar;./libs/logback-classic-1.2.3.jar** com.zhangxy.App argA argB
    • java -XX:+UseParallelGC -XX:+UseParallelOldGC -Xss512K -Xms1408M -Xmx1408M -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:MetaspaceSize=384M -XX:MaxMetaspaceSize=384M -XX:MaxDirectMemorySize=256M -XX:NativeMemoryTracking=detail -Xloggc:…/logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintGCApplicationStoppedTime -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=…/logs/dump/heap/ -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dname=template -Duser.timezone=Asia/Shanghai -Ddruid.mysql.usePingMethod=false -jar template-web-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev --server.port=8080
    • nohup java -jar tqvoip-mediaserver-1.0.1-release.jar >> run.log &

3、打包 jar 文件 – jar

  • jar: java 应用程序打包工具,可将多个类文件合并为单个 JAR 归档文件。
    • jar cvf helloWorld.jar aaa/HelloWorld.class

4、生成 API 文档 – Javadoc

  • Javadoc: Java API 文档生成器从 Java 源程序代码注释中提取文档,生成 API 文档 HTML 页
    • javadoc aaa*.java –d javadoc

5、生成 JNI(Java Native Interface)所需的 C/C++ 头文件

  • 核心作用
    • javah 是 JNI 开发中自动生成 C/C++ 头文件的关键工具,
    • 避免手动编写复杂的函数签名,确保 Java 与本地代码的正确对接。
  • 版本迁移
    • JDK 9+ 使用 javac -h 替代 javah。
  • 使用场景
    • 1、Java 调用本地代码
      • 当需要在 Java 中调用 C/C++ 编写的函数(如:高性能计算、硬件操作)时。
      • 需通过 JNI 实现,而 javah 是生成桥梁代码的关键工具。
    • 2、维护 JNI 接口
      • 当 Java 类的本地方法发生变更时,重新生成头文件以保持本地代码与 Java 代码的一致性

6、反编译 class 文件 – javap

  • Javap:Java 反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
    • javap -v -p ./Test.class

7、Java 进程的监控工具

命令说明常用形式
jps查看 java 进程 pidjps
jinfo查看 jvm 环境与参数jinfo pid > a.txt
jstat查看 jvm 内存与 GC 状态jstat -gcutil pid 1000 10
jstack查看 jvm 当前时刻的线程快照jstack -l pid
jmap生成 dump 文件jmap -dump:live,format=b,file=dump.hprof pid
jmap生成统计信息jmap -histo pid
jhatdump 分析工具jhat dump.hprof
jvisualvm图形界面,基础监控,****资源占用低+ 内存:堆/非堆内存使用情况(Eden、Survivor、Old Gen 等)
+ 线程:活动线程数、死锁检测。
+ 类加载:已加载类数量。
+ MBean 管理:通过 JMX 查看和操作 MBean 属性。
jconsole图形界面,高级监控,支持插件扩展(Visual GCBTrace
+ Visual GC:实时垃圾回收过程可视化(分代内存变化)。
+ BTrace:动态注入诊断代码(需安全权限)。
JDK8 之后,从 jdk 中移除了,使用需要去下载。
+ 内存分析:堆转储(Heap Dump)生成与分析(对象实例分布、引用链追踪)。
+ CPU 分析:方法级 CPU 热点抽样(Sampling)和精确追踪(Profiling)。
+ 线程分析:线程状态可视化、线程转储(Thread Dump)与死锁检测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值