JVM系列一:(初识jvm及class文件格式)

934 阅读1分钟

前言: 系列内容概要

  • 虚拟机基础概念
  • class文件结构
  • 内存加载过程
  • 运行时的内存结构
  • jvm常用指令
  • gc和调优

主题:jvm初步及class文件格式

内容:

java从编码到执行

如图所示,java语言编写的 .java 文件通过javac编译器编译后生成 .class文件,.class文件由classload加载器加载进内存,并同时加载java相关库,在执行时,根据需要,高频常用的部分通过即时编译器进行编译执行,其他可使用解释器进行解释执行,到最后基于os操作系统和硬件来运行。

可以通过设置jvm运行时参数 -Xint(纯解释模式) -Xcomp(纯编译模式) -Xmixed(混合模式) 来设置jvm的执行方式。混合模式可以通过设置阈值来决定高频部分达到何种程度这部分使用编译模式,设置参数为 -XX:CompileThreshold = 10000 ,默认值为10000,可调整此值。

普及一下:JVM是一个虚拟机规范,类似hotSpot,jrokit,TaoBaoVm,MSvm等是对这个规范的实现,网络流传讲的java要收费了,实际说的是oracle的hotspot虚拟机1.8以后升级收费,并不是说java语言。我们可以使用openjdk,也可以使用TaoBaoVm(阿里淘宝的vm)等。

class文件格式

592743-20160303210324987-644494251.png 此图出自(比较全的一张,替换了作者本身画的):www.cnblogs.com/chenyangyao…

idea常用相关插件 binEd(将class文件翻译为16进制字节码数据) jclasslib (分析class文件)具体安装使用可以自行搜索,比较简单。