请简单描述一下JVM内存模型或者说Java内存模型,做为Java高级开发面试的时候的高频面试题,经常出现在各种大厂的面试中,能够准确、清晰的描述出来,或者找面试官索要一份纸和笔简单的画一画,是很好的加分项。
在JVM中分为以下区域:
1.堆
做为JVM向内存申请的最大的内存区域,存放着我们创建的对象,也是进行垃圾回收的地方。
2.虚拟机栈
用于储存局部变量表、操作数栈、动态链接、方法出口等信息。栈里面存放的是堆里面对象的内存地址。
3.本地方法栈
用于存放提供给JVM虚拟机使用的由C语言实现的方法,一般都是使用native修饰的
4.方法区(Java8之后叫元空间)
存放已被虚拟机加载的各种类的信息,常量、静态变量等数据
5.程序计数器
用来记录各个线程执行的字节码的地址。这块区域不会发生OOM