一. Java虚拟机
- Sun Class VM "世界第一款商用Java虚拟机" 1996年 只有解释执行功能 如果要编译需外挂JIT编译器
- Sun HotSpot VM Sun JDK和OpenJDK中的虚拟机, 使用范围最广Java虚拟机 快速
- Sun Mobile-Embedded VM/Meta-Circular VM 移动和嵌入式虚拟机
- BEA JRockit/IBM J9 VM BEA和IBM研发的Java虚拟机 快速
- Azul VM/BEA Liquid VM 特定硬件平台专有虚拟机 最快
- Apache Harmony/Google Android Dalvik VM 虚拟机平台 兼容Java
- Microsoft JVM 微软的JVM Windows平台下JVM
除以上外还有许多Java虚拟机
二. Java内存区域与内存溢出异常
Java和C++一个重要的区别就是内存动态分配和垃圾收集技术
1. 运行时数据区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域
a. 程序计数器
程序计数器