虚拟机的前世今生和Java内存区域
Java程序执行过程 javac编译成.class文件,然后jvm将其加载到方法区,执行引擎将会执行这些字节码,执行时会翻译成操作系统相关函数,jvm作为.class文件的翻译存在,输入字节码,调用操作系统函数。 过程如下:Java文件->编译器->字节码->jvm->机器码。 JVM、JRE、JDK的关系 JVM充当翻译的角色,把class翻译成机器识别的代码。 JRE包含jvm,还提供很多类库(也就是jar包,比如读取或者操作文件,连接网络,使用IO等)JVM标准加上实现的一大堆基础类库,组成java运行时环境。 JDK:负责编译代码,调试代码,打包代码,有时候还需要反编译代码,jdk提供了一些非常nice的工具,比如javac(编译代码),java -jar打包代码,javap反汇编等 JVM的作用是:从软件层面屏蔽不同操作系统在底层硬件和指令的不同。 同时JVM是一个虚拟化的操作系统,类似Linux或者Windos的操作系统,只是它架在操作系统上,接收字节码也就是class,把字节码翻译成操作系统上的机器码进行执行。 JVM的发展 常见的Hotspot虚拟机,Jrocket,J9,TaobaoVM等 JVM整体知识模块 JVM能涉及非常庞大的一块知识体系,比如内存结构、垃圾回收、类加载、性能调优、JVM自身优化技术、执行引擎、类文件结构、监控工具等。 但是所有的知识体系这