虚拟机
class 和 java类库都加载到内存
利用字节码解释器 逐行解释 对于热点代码用即时编译器处理
利用JVM跨平台

不同的平台有特定的JVM ,由JVM将Class文件转换成对应平台的二进制文件,才实现了平台无关性
实际上,JVM不仅被Java语言所使用,还有如Scala、Jython等语言的编译过程也使用JVM
其实JVM和Java无关

JVM vs JDK vs JRE

JVM
java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在
JRE
JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序
JDK
jDK 是 Java Development Kit 缩写,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序
JVM 命令
jps 查看java进程
jinfo 实时查看和调整jvm配置参数
jinfo -flag MaxHeapSize 11280
-XX:MaxHeapSize=85.....
jstat
查看虚拟机性能统计信息
查看类加载信息
jstat -class 进程号 打印间隔时间 打印次数
如 jstat -class 11280 500 10
打印gc信息
jstat -gc 11280 500 10

jmap
jamp -heap 11280 打印堆内存相关信息


jstack PID
查看线程堆栈信息 --- 便于判断jvm死锁问题

JVM 性能优化指南

浙公网安备 33010602011771号