java 虚拟机 --内存区域分配

java 虚拟机 --内存区域分配

1:java运行时数据区域


java运行时会把内存划分为不同的数据区域

2:解释每一个区域

   1:程序计数器

    一个处理器同一时间只会执行一个线程,java虚拟机的多线程执行是通过切换时间分片的形式实现的,各个线程都有自己的计数器,记录字节码执行的行号,线程切换时能正确执行代码,这一块的内存是线程私有的

  2:java 虚拟机栈 

    每一个方法执行时会创建一个栈帧用于记录局部变量、动态链接、 方法出入口等信息,即方法的调用全过程,开始的虚拟机入栈到结束的出栈;这一块内存也是线程私有的;所以异常触发时需要回溯和调用栈的信息,开销比较大;

  3:java 堆

   java堆用于存储和分配实例对象,虚拟机启动时创建,所有线程共享一个堆内存

扫描二维码关注公众号,回复: 954297 查看本文章

 4:本地方法栈

  记录Native方法的调用的服务

  5:方法区

  所有线程共享一个方法区,用于记录加载类的信息、常量、静态变量等数据  









猜你喜欢

转载自blog.csdn.net/ailice001/article/details/79830300