JAVA基础(一)

1.什么是JVM
JVM是虚拟机、是一个虚拟出来的计算机、可以运行JAVA编写的程序、通过模仿真实的计算机与真实计算机进行交互的软件程序。
2.JVM内存结构
JVM内存结构分为三大块:堆内存、方法区、栈。
3.JVM中,堆、栈、方法区、直接内存、堆和栈的区别
这里写图片描述
这里写图片描述
3.1JAVA内存细分:JAVA堆、JAVA栈、方法区、本地方法栈。

3.2方法区是各个线程共享的区域,存放类信息、常量、静态变量。

3.3JAVA堆也是线程共享的区域,我们的类的实例就放在这个区域,可以想象你的一个系统会产生很多实例,因此java堆的空间也是最大的。如果java堆空间不足了,程序会抛出OutOfMemoryError异常。

3.4java栈是每个线程私有的区域,它的生命周期与线程相同,一个线程对应一个java栈,每执行一个方法就会往栈中压入一个元素,这个元素叫“栈帧”,而栈帧中包括了方法中的局部变量、用于存放中间状态值的操作栈,这里面有很多细节,我们以后再讲。如果java栈空间不足了,程序会抛出StackOverflowError异常,想一想什么情况下会容易产生这个错误,对,递归,递归如果深度很深,就会执行大量的方法,方法越多java栈的占用空间越大。

3.5本地方法栈角色和java栈类似,只不过它是用来表示执行本地方法的,本地方法栈存放的方法调用本地方法接口,最终调用本地方法库,实现与操作系统、硬件交互的目的。

3.6PC寄存器,说到这里我们的类已经加载了,实例对象、方法、静态变量都去了自己改去的地方,那么问题来了,程序该怎么执行,哪个方法先执行,哪个方法后执行,这些指令执行的顺序就是PC寄存器在管,它的作用就是控制程序指令的执行顺序。

3.7执行引擎当然就是根据PC寄存器调配的指令顺序,依次执行程序指令

猜你喜欢

转载自blog.csdn.net/qq_32447301/article/details/80101661