2017-09-29 10:44:04.0|分类: jvm|浏览量: 4866
1、搜索可以安装的jdk包 sudo apt-cache search openjdk-7-jdk 2、安装jdk包 sudo apt-get install openjdk-7-jdk 安装成功之后查看文件夹下面的内容,发现有很多工具类 /usr/lib/jvm/java-7-openjdk-amd64/bin$ ls appletviewer idlj java javah jcmd jhat jps jstack keytool pack200 rmid serialver unpack200 xjc apt jar javac javap jconsole jinfo jrunscript jstat native2ascii policytool rmiregistry servertool wsgen extcheck jarsigner javadoc java-rmi.cgi jdb jmap jsadebugd jstatd orbd rmic schemagen tnameserv wsimport java默认安装路径 conca@hnc:/usr/lib/jvm$ ls default-java java-1.7.0-openjdk-amd64 java-7-openjdk-amd64 命令执行位置/usr/bin/java 3、卸载jdk包 sudo apt-get remove openjdk-7-jdk 卸载之后剩余文件,还有java,只是没有了javac jstatck ... /usr/lib/jvm/java-7-openjdk-amd64/bin$ ls java java-rmi.cgi keytool orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200 执行java命令,还是ok的~~ 证明java没有彻底卸载 4、彻底卸载jdk包 sudo apt-get autoremov 删除配置 conca@localhost:~$ java 再次执行java -bash: /usr/bin/java: 没有那个文件或目录 查看java路径,java执行路径 whereis java which java (java执行路径) echo $JAVA_HOME echo $PATH 5、jps命令 jps:虚拟机进程状况工具 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main class,class()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。 jps命令格式: jps [options] [hostid] 参数解释: hostid:jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。 options参数说明: -q 不输出类名、Jar名和传入main方法的参数 -m 输出传入main方法的参数 -l 输出main类或Jar的全限名 -v 输出传入JVM的参数 jps显示启动时候的参数:jps -v jps显示启动时候参数+main类:jps -v -l jps显示启动时候参数+mian类+main参数:jps -m -l -v tomcat启动的时候传入的参数是start 6、jstat:虚拟机统计信息见识工具 jstat是用于见识虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。 jstat option vmid [interval[s|ms] [count]]
使用例子: jstat -gc 10184 250 7 S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used) EC、EU:Eden区容量和使用量 OC、OU:年老代容量和使用量 PC、PU:永久代容量和使用量 YGC、YGT:年轻代GC次数和GC耗时 FGC、FGCT:Full GC次数和Full GC耗时 GCT:GC总耗时 jstat -gcutil pid
注释:E表示Eden;s1,s1表示survivor0,survivor1;老年代o表示old,永久代p表示permanent 程序运行以来供放生Minor GC(YGC,表示Yong GC)122次,总耗时0.392,发生Full GC(FGC,表示Full GC)6次,(FGCT)总耗时为0.666。
堆内存 = 年轻代 + 年老代 + 永久代 年轻代 = Eden区 + 两个Survivor区(From和To) 7、jinfo : java 配置信息工具 jinfo(Configuration Info for java)的作用是实时地查看和调整虚拟机的各项参数。使用jps命令的-v参数可以查看虚拟机启动时显示指定的参数列表,但是想知道未被显示指定的参数的系统默认值,使用jinfo的-flag选项进行查询了。jinfo还可以使用-sysprops选项把虚拟机进程的System.getProperties()的内容打印出来。 jinfo命令格式:jinfo [option] pid 例子:
8、jmap:java内存映像工具 jmap(Memory Map for java ) 命令用于生成堆转储快照(一般被称为headdump 或dump文件) jmap命令格式:jmap [option ] vmid 使用方法 jmap -histo pid。如果使用SHELL ,可采用jmap -histo pid>a.log日志将其保存到文件中。 jmap -permstat pid 打印进程的类加载器和类加载器加载的持久代对象信息,输出:类加载器名称、对象是否存活(不可靠)、对象地址、父类加载器、已加载的类大小等信息 jmap -heap pid查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况 jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象 class name是对象类型,说明如下: B byte C char D double F float I int J long Z boolean [ 数组,如[I表示int[] [L+类名 其他对象 用jmap把进程内存使用情况dump到文件中,再用jhat分析查看。jmap进行dump命令格式如下: jmap -dump:format=b,file=dumpFileName pid dump出来的文件可以用MAT、VisualVM等工具查看,这里用jhat查看 root@ubuntu:/# jmap -dump:format=b,file=/tmp/dump.dat 10184 Dumping heap to /tmp/dump.dat ... Heap dump file created sudo jmap -F -dump:format=b,file=/tmp/dump.dat 10184 9、jstack:java堆栈跟踪工具 jstack(stack trace for java) 命令用于审车个虚拟机当前时刻的线程快照(一般称为threahdump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间的停顿原因。 -l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况 -m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法) jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。 (1)第一步先找出Java进程ID,我部署在服务器上的Java应用名称为tomcat7 ps -ef | grep tomcat7 | grep -v grep (2)第二步找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid (3)把最耗时的线程转换成十六进制 printf "%x\n" 21742 (4)输出进程21711的堆栈信息,然后根据线程ID的十六进制值grep jstack 21711 | grep 54ee 10 Jconsole 参考文档:http://jiajun.iteye.com/blog/810150 https://my.oschina.net/feichexia/blog/196575 http://blog.csdn.net/sunny243788557/article/details/52796904
|