虚拟机

 

   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 性能优化指南

 

posted on 2022-08-30 15:51  cltt  阅读(29)  评论(0编辑  收藏  举报

导航