Javac:编译把面向程序员的java语言编译成面向虚拟机的.class文件
Jvm:把.class文件通过类的加载器加载到虚拟机,虚拟机把文件转化成面向操作系统的指令
Java虚拟机的内存模型
堆heap:存放对象的地方,是虚拟机最占内存的地方,也是GC主要工作的地方,线程共享的地方.创建的对象过多就会OOM,循环创建无用的对象,数据库查询一次加载过多的对象
虚拟机栈stack:程序员编码的程序运行时 存放线程的地方,一个线程对应一个栈,一个方法对应一个帧栈 栈的内存是线程之间不可共享的 也会OOM 递归调用方法的时候 或者 创建的线程太多,没有空间开辟
本地方法栈: 虚拟机为操作系统创建的执行线程的地方,这里的方法都是native方法,线程不共享的区域
程序计数器:标记线程的,线程不共享的区域
方法区:存的是类的信息,修饰符,常量池.线程共享的区域