JAVA常用命令(1)

常用命令

在JDK的bin目彔下,包含了java命令及其他实用工具。

jps:查看本机的Java中进程信息。

jstack:打印线程的栈信息,制作线程Dump。

jmap:打印内存映射,制作堆Dump。

jstat:性能监控工具。

jhat:内存分析工具。

jconsole:简易的可视化控制台。

jvisualvm:功能强大的控制台。

认识Java Dump:

Java虚拟机的运行时快照。将Java虚拟机运行时的状态和信息保存到文件。补足传统Bug分析手段的不足: 可在任何Java环境使用;信息量充足。 针对非功能正确性的Bug,主要为:多线程幵发、内存泄漏

  • 线程Dump,包含所有线程的运行状态。纯文本格式。

  • 堆Dump,包含线程Dump,幵包含所有堆对象的状态。二进制格式。

制作java Dump的方式

  • 虚拟机发生内存问题自动生成 dump文件
   -XX:+HeapDumpOnOutOfMemoryError
  • 使用图形化工具制作Dump

使用JDK(1.6)自带的工具:Java VisualVM。

  • 使用命令行制作Dump

jstack:打印线程的栈信息,制作线程Dump。

jmap:打印内存映射,制作堆Dump。

如何生成JAVA DUMP

  • 找出目标Java应用的进程ID(jps)
  • 使用jstack命令制作线程Dump • Linux环境下使用kill命令制作线程Dump(杀死线程?)
  • 使用jmap命令制作堆Dump

Javac 命令的简单学习

javac - java的编译命令

默认情况下,编译生成的class 文件和java文件在一个目录中,除非使用-d 参数指定编译结果的生成位置
javac [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]

  • options 命令行参数
  • sourcefiles 将要被编译的java源代码
  • classes 要为注释处理的一个或多个类
  • argfiles 一个或多个文件 文件中包含options 和 sourcefiles的名字

option

-classpath 指定编译使用的classpath路径,会覆盖掉系统常量中的classpath,如果没有使用,默认使用当前目录(.)

-Djava.ext.dirs=directories 指定拓展类加载器加载的ext目录,比如jdk自带的加密算法就在默认的$JAVA_HOME/lib/ext目录下

-d directory 指定class文件生成位置

-encoding encoding 指定java文件的编码方式,如果没指定,那么就是操作系统自默认编码集

-s dir 指定源文件位置
-verbose 显示编译过程

-source release 限定接收的java源文件的使用的java语法是哪一代jdk

交叉编译

默认情况下,类是根据javac附带的平台的引导程序和扩展类编译的。 但javac还支持交叉编译,其中类是针对不同Java平台实现的引导程序和扩展类编译的。 交叉编译时使用-bootclasspath和-extdirs非常重要;意思是说你可以将用java8语法编写的源码编译成jdk6 上运行的字节码!

  • target version

生成以指定版本的VM为目标的类文件。 类文件将在指定的目标和更高版本上运行,但不具备前向兼容性。
默认的target 数值 取决于 -source属性

If -source is not specified, the value of -target is 1.7
If -source is 1.2, the value of -target is 1.4
If -source is 1.3, the value of -target is 1.4
If -source is 1.5, the value of -target is 1.7
If -source is 1.6, the value of -target is 1.7
For all other values of -source, the value of -target is the value of -source.

-bootclasspath bootclasspath
交叉编译使用bootclasspath 路径

一个案例,java源码是用1.6编码,目标运行在jdk6 的jvm上
javac -source 1.6 -target 1.6 -bootclasspath C:\jdk1.6.0\lib\rt.jar  -extdirs "" OldCode.java

猜你喜欢

转载自blog.csdn.net/whp404/article/details/81322858