JVM内存结构学习笔记

JVM内存结构,如下图所示:

 

1.JAVA虚拟机栈

        Java虚拟机栈,占用操作系统内存,当有新线程被创建时JVM为其创建一个JAVA虚拟机栈,生命周期和线程一样,每个方法被执行时压入一个栈帧,栈帧存储了被调用方法的信息如局部变量表、动态链接、操作数、方法出口等信息,当方法返回之后,栈帧被丢弃。

2.程序计数器PC

          是一个很小的内存区域,不在RAM上而是在CPU上,用于记录程序执行进度。

3.堆

          JVM启动的时候会创建一个堆区供所有线程放对象和数组。

4.方法区

          方法区存放了加载的类的描述信息,它是线程安全的,是可以动态调整大小的,还可以发生GC。方法区内有一个运行时常量池,用于存储编译器生成的常量和引用。在hotspot虚拟机中,这块区域对应持久代。

5.本地方法栈

          用于存放native方法的信息。native方法指非JAVA方法。

线程共享的:堆和方法区;

线程私有的:虚拟机栈、本地方法栈、程序计数器这一小部分内存。

     

猜你喜欢

转载自blog.csdn.net/weixin_38785199/article/details/82915363
今日推荐