一、JVM
Java Virtual Machine,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
l一套字节码指令集(执行引擎)
l一组寄存器
l一个栈
l一个垃圾回收堆
l一个存储方法域
l一个本地方法栈
l一套调用本地方法的接口
pJVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行
二、常见关于JVM的异常
- java.lang.OutOfMemoryError: PermGen space:Java虚拟机对永久代Perm内存设置不够( Java反射大量使用常见)
JDK1.8之后看不到这个错了!
- java.lang.OutOfMemoryError: java heap space :Java虚拟机对堆内存设置不够 (内存泄漏:常见的集合对象引用)
- java.lang.StackOverflowError :Java虚拟机对栈内存设置不够(递归没返回,或者循环调用造成)
- Fatal: Stack size too small:栈空间太小
- java.lang.OutOfMemoryError: unable to create new native thread:操作系统没有足够的资源来产生这个线程(可以通过修改-Xss来减少分配给单个线程的空间)
三、JVM的种类
- HotSpot VM(主流)
- Oracle / Sun JDK、OpenJDK的各种变种(例如IcedTea、Zulu)用的都是相同核心的HotSpot VM,
在没有特殊说明的情况下说jvm实现原理一般均指HotSpot VM
- JDK8的HotSpot VM已经是以前的HotSpot VM与JRockit VM的合并版,也就是传说中的“HotRockit”,只是产品里名字还是叫HotSpot VM(移除PermGen )
- J9 VM
J9是IBM开发的一个高度模块化的JVM
</