JAVA基础工具
jar 创建和管理jar文件
java java运行工具,用于运行.class字节码和.jar文件
javac 用于java编程语言的编译器
javadoc api文档生成器
javah 用于编写native方法
javap class文件反汇编为源文件
JSP
jps查看其进程id
Jmap
可以用来查看内存信息,实例个数以及占用内存大小
查看实例个数以及占用内存大小
进入D 盘 jmap -histo 21296 > ./log.txt
log内容
num:序号
instances:实例数量
bytes:占用空间大小
class name:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]
堆大小
jmap -heap 21296
瞬时堆内存dump
jmap ‐dump:format=b,file=eureka.hprof 21296
也可以设置内存溢出自动导出dump文件(内存很大的时候,可能会导不出来)
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./log.txt
jstat
JVM性能统计工具
显示加载class 的数量
jstat -class pid
查看gc信息,gc次数和时间
jstat -gc pid
监控堆年轻代老年代使用量和剩余大小
jhat
java 堆分析工具,分析堆内存对象信息
Jstack
jstack 进程id
找出死锁、查出GC次数和时间
jstat -gc PID
JVM信息和GC信息
S0C:这是From Survivor区的大小
S1C:这是To Survivor区的大小
S0U:这是From Survivor区当前使用的内存大小
S1U:这是To Survivor区当前使用的内存大小
EC:这是Eden区的大小
EU:这是Eden区当前使用的内存大小
OC:这是老年代的大小
OU:这是老年代当前使用的内存大小
MC:这是方法区(永久代、元数据区)的大小
MU:这是方法区(永久代、元数据区)的当前使用的内存大小
YGC:这是系统运行迄今为止的Young GC次数
YGCT:这是Young GC的耗时
FGC:这是系统运行迄今为止的Full GC次数
FGCT:这是Full GC的耗时
GCT:这是所有GC的总耗时
Jinfo
jinfo不仅可以查看运行时某一个Java虚拟机参数的实际取值, 甚至可以在运行时修改部分参 数,并使之立即生效。
JVisualVm
JVisualVM是JDK自带的性能检测工具,路径在%JAVA_HOME%/bin下面。双击打开,
jvisualvm
**概述:**该JVM进程的主类,参数和详细的jvm参数等
**监视:**包含CPU,堆(内存),类的加载和启动的线程等信息
**线程:**线程相关的信息
**抽样:**可对CPU、内存进行抽样
Jconsole
简易版jvisualvm
jconsole 进程id
参考:https://blog.csdn.net/WODESHENNI/article/details/111225211
考题
1.运用下列哪个命令能够获取JVM的内存映像
正确答案: B
A: jinfo
B: jmap
C: jhat
D: jstat
1、jps:查看本机java进程信息。
2、jstack:打印线程的栈信息,制作线程dump文件。
3、jmap:打印内存映射,制作堆dump文件
4、jstat:性能监控工具
5、jhat:内存分析工具
6、jconsole:简易的可视化控制台
7、jvisualvm:功能强大的控制台
2.以下哪项不属于java类加载过程?
正确答案: B
A: 生成java.lang.Class对象
B: int类型对象成员变量赋予默认值
C: 执行static块代码
D: 类方法解析
类的加载包括:加载,验证,准备,解析,初始化。
选项A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
选项B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
选项C:这个会调用。可以用反射试验。
选项D:类方法解析发生在解析过程。