java虚拟机
1、java虚拟机的内存分区是如何的划分? 2、划分的分区的作用是什么?解决什么问题? 3、java对象的创建的过程? 4、OOM内存溢出异常是如何产生的? java运行时数据区 java虚拟机会将管理的内存划分为若干个不同的数据区域(有程序计数器、虚拟机栈、本地方法栈、方法区、堆),如下图 程序计数器、虚拟机栈、本地方法栈是线程隔离的,即每个线程都拥有自己的虚拟机栈、本地方法栈、程序计数器 方法区、堆这两块内存是所有线程间共享的 2、程序计数器 2.1)什么是程序计数器 程序计数器是一个记录着当前线程所执行的字节码的行号指示器。JAVA代码编译后的字节码在未经过JIT(实时编译器)编译前,其执行方式是通过“字节码解释器”进行解释执行。简单的工作原理为解释器读取装载入内存的字节码,按照顺序读取字节码指令。读取一个指令后,将该指令“翻译”成固定的操作,并根据这些操作进行分支、循环、跳转等流程。从上面的描述中,可能会产生程序计数器是否是多余的疑问。因为沿着指令的顺序执行下去,即使是分支跳转这样的流程,跳转到指定的指令处按顺序继续执行是完全能够保证程序的执行顺序的。假设程序永远只有一个线程,...