Java工具:javac、javap、jmap、jhat、jstack、jstat

JerryXia 发表于 , 阅读 (35)

简介

我们平常编写的Java代码需要先被编译为二进制的字节码,例如Hello.java源文件会被编译为Hello.class字节码文件,然后才能被Java虚拟机执行。

在此之前一般都是用Eclipse直接进行Java开发了,命令行用的非常少,基本上也就是在知道javac后面跟上.java文件。现在接触到了更多的Java知识,有时候需要远程调试Java程序,或者需要查看.class文件,发现javac这个工具有很多需要关注和学习的地方。

javac$JAVA_HOME/bin中,一般在安装好jdk,并配置好环境变量后就可以直接使用了。

说明

有两种方法可将源代码文件名传递给 javac

如果源文件数量少,在命令行上列出文件名即可。

如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在 javac 命令行中使用该列表文件名,文件名前冠以 @ 字符。

源代码文件名称必须含有 .java 后缀,类文件名称必须含有 .class 后缀,源文件和类文件都必须有识别该类的根名。例如,名为 MyClass 的类将写在名为 HelloWorld.java的源文件中,并被编译为字节码类文件 HelloWorld.class。

内部类定义产生附加的类文件。这些类文件的名称将内部类和外部类的名称结合在一起,例如 HelloWorld$InnerHelloworld.class。

应当将源文件安排在反映其包树结构的目录树中。例如,如果将所有的源文件放在 /workspace 中,那么 com.zhao.test.HelloWorld 的代码应该在 \workspace\com\zhao\test\HelloWorld.java 中。

缺省情况下,编译器将每个类文件与其源文件放在同一目录中。可用 -d 选项(请参阅后面的选项)指定其它目标目录。

常用参数

下面介绍几个常用或者说自己会用的参数。

用法: javac <options> <source files>其中, 可能的选项包括:  -g                         生成所有调试信息,-g参数在debug的时候会使用,特别是在使用Eclipse的进行debug的时候,里面的一些选项其实对应的就是-g参数。  -g:none                    不生成任何调试信息  -g:{lines,vars,source}     只生成某些调试信息  -nowarn                    不生成任何警告  -verbose                   输出有关编译器正在执行的操作的消息  -classpath <路径>            指定查找用户类文件和注释处理程序的位置  -cp <路径>                   指定查找用户类文件和注释处理程序的位置  -d <目录>                    指定放置生成的类文件的位置  -s <目录>                    指定放置生成的源文件的位置  -encoding <编码>             指定源文件使用的字符编码  -source <发行版>              提供与指定发行版的源兼容性  -target <发行版>              生成特定 VM 版本的类文件  -version                   版本信息  -help                      输出标准选项的提要