欢迎跳转到本文原文链接Backend_Notes
以下程序调试技巧节选自 Java 核心技术卷一(p307-p308)
-
可以通过捕获异常来生成堆栈信息,也可以直接使用
Thread.dumpStack()
来获得堆栈信息 -
要观察类的加载过程,可以使用
-verbose
标志启动 JVM -
-Xlint 可以告诉编译器对一些普遍容易出现的代码问题进行检测,如
javac -Xlint:fallthrough
- -Xlint 或 -XLint:all – 执行所以检查
- -Xlint:deprecation – 检查废弃方法
- -Xlint:fallthrough – 检查 switch 语句是否缺少 break 语句
- -Xlint:finally – 警告 finally 子句不能正常执行
- -Xlint:none – 不执行任何检查
- -Xlint:serial – 警告没有 serialVersionUID 的串行化类
- -Xlint:unchecked – 对通用类型与原始类型之间的危险转换给予警告
- -Xlint:path – 检查类路径与源代码路径上所有目录是否存在
-
Java 虚拟机增加了对 Java 应用程序进行监控 monitoring 和管理 management 的支持,我们可以通过以下两个命令来使用,更多详情可以查看Using JConsole to Monitor Applications:
-
jconsole
启动jconsole -
jconsole processID
启动对应进程程序的监控,启动后如图:
-
-
可以通过 jmap 工具获得一个堆堆转储,其中显示了堆中的每个对象
-
可以通过
-Xprof
标志运行 Java 虚拟机,这会运行一个基本的剖析器来跟踪哪些代码中经常被调用的方法。输出结果中还会显示哪些方法是即时编译器编译的。